mirror of
https://gitlab.com/siarp/siarp.de.git
synced 2026-08-07 19:18:17 +00:00
cleanup project
* remove httrack meta files * rename site dir to "public"
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/113 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Reservierte Begriffe in JavaScript | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"QUFbL2inwnTO-GRvogEgBb0mxB_V0JkaZpa2a360G5U","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-113 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Reservierte Begriffe in JavaScript</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-113" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">12. June 2007 - 16:40 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>abstract (r)<br />
|
||||
anchors (b)<br />
|
||||
applets (b)<br />
|
||||
arguments (g)<br />
|
||||
Array (g)<br />
|
||||
as (z)<br />
|
||||
Boolean (g)<br />
|
||||
boolean (r)<br />
|
||||
break (t)<br />
|
||||
byte (r)<br />
|
||||
case (t)<br />
|
||||
catch (t)<br />
|
||||
char (r)<br />
|
||||
class (r)<br />
|
||||
const (r)<br />
|
||||
continue (t)<br />
|
||||
Date (g)<br />
|
||||
debugger (r)<br />
|
||||
decodeURI (g)<br />
|
||||
decodeURIComponent (g)<br />
|
||||
default (t)<br />
|
||||
delete (t)<br />
|
||||
do (t)<br />
|
||||
document (b)<br />
|
||||
double (r)<br />
|
||||
elements (b)<br />
|
||||
else (t)<br />
|
||||
encodeURI (g)<br />
|
||||
enum (r)<br />
|
||||
Error (g)<br />
|
||||
escape (g)<br />
|
||||
eval (g)<br />
|
||||
EvalError (g)<br />
|
||||
export (r)<br />
|
||||
extend (r)<br />
|
||||
false (t)<br />
|
||||
final (r)<br />
|
||||
finally (t)<br />
|
||||
float (r)<br />
|
||||
for (t)<br />
|
||||
forms (b)<br />
|
||||
frames (b)<br />
|
||||
Function (g)<br />
|
||||
function (t)<br />
|
||||
goto (r)<br />
|
||||
history (b)<br />
|
||||
if (t)<br />
|
||||
images (b)<br />
|
||||
implements (r)<br />
|
||||
import (r)<br />
|
||||
in (t)<br />
|
||||
Infinity (g)<br />
|
||||
instanceof (t)<br />
|
||||
int (r)<br />
|
||||
interface (r)<br />
|
||||
is (z)<br />
|
||||
isFinite (g)<br />
|
||||
isNaN (g)<br />
|
||||
links (b)<br />
|
||||
location (b)<br />
|
||||
long (r)<br />
|
||||
Math (g)<br />
|
||||
namespace (z)<br />
|
||||
NaN (g)<br />
|
||||
native (r)<br />
|
||||
navigator (b)<br />
|
||||
new (t)<br />
|
||||
null (t)<br />
|
||||
Number (g)<br />
|
||||
Object (g)<br />
|
||||
options (b)<br />
|
||||
package (r)<br />
|
||||
parent (b)<br />
|
||||
parseFloat (g)<br />
|
||||
parseInt (g)<br />
|
||||
private (r)<br />
|
||||
protected (r)<br />
|
||||
public (r)<br />
|
||||
RangeError (g)<br />
|
||||
ReferenceError (g)<br />
|
||||
RegExp (g)<br />
|
||||
return (t)<br />
|
||||
screen (b)<br />
|
||||
self (b)<br />
|
||||
short (r)<br />
|
||||
static (r)<br />
|
||||
String (g)<br />
|
||||
super (r)<br />
|
||||
switch (t)<br />
|
||||
synchronized (r)<br />
|
||||
SyntaxError (g)<br />
|
||||
this (t)<br />
|
||||
throw (t)<br />
|
||||
throws (r)<br />
|
||||
top (b)<br />
|
||||
transient (r)<br />
|
||||
true (t)<br />
|
||||
try (t)<br />
|
||||
TypeError (g)<br />
|
||||
typeof (t)<br />
|
||||
undefined (g)<br />
|
||||
unescape (g)<br />
|
||||
URIError (g)<br />
|
||||
use (z)<br />
|
||||
var (t)<br />
|
||||
void (t)<br />
|
||||
volatile (r)<br />
|
||||
while (t)<br />
|
||||
window (b)<br />
|
||||
with (t)</p>
|
||||
|
||||
<p>(t): Tatsächlich genutzte Begriffe in ECMAScript-262 v3<br />
|
||||
(r): Reservierte aber ungenutzte Begriffe in ECMAScript-262 v3<br />
|
||||
(z): Möglicherweise reserviert in ECMAScript-262 v4<br />
|
||||
(g): Global gesetzte Variablen in ECMAScript-262 v3<br />
|
||||
(b): Gesetzte Variablen im DOM</p></div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Office spreadsheet icon" title="application/vnd.ms-excel" src="../../modules/file/icons/x-office-spreadsheet.png" /> <a href="../../sites/siarp.de/files/reserved_words.xls" type="application/vnd.ms-excel; length=38912" title="reserved_words.xls">reserved_words.xls</a></span></td><td>38 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/113 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:27 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/135 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Plone: Entwicklungsumgebung Mac | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"iKGE4Xvd6W-NVuWa7Rrzi_DBX_5V5x5m6IZrmrmoqYU","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-135 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Plone: Entwicklungsumgebung Mac</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-135" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">17. October 2007 - 16:39 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><h3>10.4 Tiger</h3>
|
||||
|
||||
<p>Dem Buch "Professional Plone Development" von Martin Aspeli folgend, soll nicht auf einen fertigen Installer zurückgegriffen werden. Ein automatisierter Build-Out Prozess soll möglich sein.</p>
|
||||
|
||||
<p>OS X 10.4.10 liefert zwar Python 2.4 mit, es fehlt aber z.B. ein Wrapper für die libxml2. Um nicht unnötig im System rumzufummeln, soll MacPorts verwendet werden:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ sudo port install python24 py-libxml2 py-elementtree py-pil</div></div></p>
|
||||
|
||||
<p>MacPorts' Python-Packages werden in <span class="geshifilter"><code class="text geshifilter-text">/opt/local/lib/python2.4/site-packages</code></span> installiert. Irgendwo ist allerding <span class="geshifilter"><code class="text geshifilter-text">/opt/local/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages</code></span> als Installationspfad für reine Python-Packages angegeben.</p>
|
||||
|
||||
<p>Um nun Python-Packages installieren zu können, ohne in MacPorts-Installationspfade einzugreifen, werden wir ein virtuelles Python im home-Verzeichnis erstellen (<a href="http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python" rel="nofollow">http://peak.telecommunity.com/DevCenter/EasyInstall#creating-a-virtual-python</a>). Anders als beschrieben funktioniert das mit dem Installationspfad aber nicht automatisch (vermutlich wegen dem "irgendwo angegebenen" Pfad). Im Verzeichnis <span class="geshifilter"><code class="text geshifilter-text">~/lib/python2.4/site-packages</code></span> werden <span class="geshifilter"><code class="text geshifilter-text">.pth</code></span>-Dateien nicht ausgewertet. Es muss dieses Verzeicnis im <span class="geshifilter"><code class="text geshifilter-text">$PYTHONPATH</code></span> angegeben sein.</p>
|
||||
|
||||
<p>In <span class="geshifilter"><code class="text geshifilter-text">~/.profile</code></span>:<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">export PYTHONPATH=~/lib/python2.4/site-packages:$PYTHONPATH</div></div></p>
|
||||
|
||||
<p>Bei jeder Installation im virtuellen Python muss jetzt auch noch das Präfix angegeben werden:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ ~/bin/python ez_setup.py --prefix=~</div></div></p>
|
||||
|
||||
<p>bzw.</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ ~/bin/easy_setup --prefix=~ ZopeSkel</div></div></p>
|
||||
|
||||
<hr />
|
||||
|
||||
<p>Mit dem Befehl</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ ./bin/instance fg</div></div></p>
|
||||
|
||||
<p>soll der Server automatisch im Debug-Modus gestartet werden. Das ist bei mir aber nicht der Fall. Beim Buildout oder In der <span class="geshifilter"><code class="text geshifilter-text">buildout.cfg</code></span> muss explixit der Modus angegeben werden, was dann in die <span class="geshifilter"><code class="text geshifilter-text">zope.cfg</code></span> übernommen wird.</p>
|
||||
|
||||
<p>Möglicher Weise liegt es daran, dass <span class="geshifilter"><code class="text geshifilter-text">parts/instance/bin/runzope</code></span> statt <span class="geshifilter"><code class="text geshifilter-text">parts/instance/bin/zopectl</code></span> ausgefürt wird (<a href="http://www.nabble.com/Foreground,-but-not-debug.-t2287152.html" rel="nofollow">http://www.nabble.com/Foreground,-but-not-debug.-t2287152.html</a>).</p>
|
||||
|
||||
<h3>10.5 Leopard (Ergänzungen)</h3>
|
||||
|
||||
<p>Python 2.4 muss mit MacPorts installiert werden. Leopard bringt nur 2.5 mit. Die Variante "puredarwin" verhindert die Erstellung eines Frameworks (s. Beschreibung Tiger).</p>
|
||||
|
||||
<p><span class="geshifilter"><code class="text geshifilter-text">sudo port install python24 +puredarwin</code></span></p>
|
||||
|
||||
<p>Alle weiteren Python-Pakete müssen dann auch mit der Variante "puredarwin" installiert werden.</p>
|
||||
|
||||
<p>Mit dem Paket "py-setuptools" wird auch gleich das Skript "easy_install" installiert.</p>
|
||||
|
||||
<p>Dann noch "py-pil" und "py-elementtree"...</p>
|
||||
|
||||
<p><span class="geshifilter"><code class="text geshifilter-text">sudo easy_install ZopeSkel</code></span></p>
|
||||
|
||||
<p>Und am Ende doch noch ein virtuelles Python in <span class="geshifilter"><code class="text geshifilter-text">~/bin/</code></span> installiert, um den komplizierten Pfad <span class="geshifilter"><code class="text geshifilter-text">/opt/local/bin/python2.4</code></span> zu vereinfachen und vielleicht doch mal nur hier etwas zu installieren.</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/135 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,133 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/143 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Primat des Primaten: Ubuntu Gutsy Gibbon auf dem VPS 3.0 | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"nIqIBxRQgIBiEotV8tXFfi9yg5czIR6Oe5MEYvKMN48","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-143 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Primat des Primaten: Ubuntu Gutsy Gibbon auf dem VPS 3.0</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-143" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">26. January 2008 - 16:49 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Mit etwas Überredung hat sich der Gibbon doch noch auf dem neuen Server wecken lassen. Anscheinend wird nach dem Upgrade der SSH-Port einfach nicht mehr abgehört. (Der Server lief ja.) Vermutlich liegt es daran, dass in Gutsy xinetd (und nicht mehr inetd) verwendet wird. Nach dem Upgrade auf Ubuntu 7.10 muss xinetd umkonfiguriert werden, damit der Daemon im inetd-Kompatibilitätsmodus startet und auch das inetd-configfile berücksichtigt. (Freundlicherweise wird man beim Upgrade ja auch eigentlich gewarnt: <span style="font-style:italic">If you are indeed using xinetd, you will have to convert the above into /etc/xinetd.conf format, and add it manually. See /usr/share/doc/xinetd/README.Debian for more information.</span>)</p>
|
||||
|
||||
<p>Also: Nach dem Upgrade auf Gutsy vor dem Reboot /etc/init.d/xinetd editieren und in die Startkonfiguration um den Parameter <span style="font-style:italic">-inetd_compat</span> erweitern. </p>
|
||||
|
||||
<p><span class="geshifilter"><code class="text geshifilter-text">start-stop-daemon --start --quiet --background --exec /usr/sbin/xinetd -- -pidfile /var/run/xinetd.pid $XINETD_OPTS</code></span></p>
|
||||
|
||||
<p>wird zu</p>
|
||||
|
||||
<p><span class="geshifilter"><code class="text geshifilter-text">start-stop-daemon --start --quiet --background --exec /usr/sbin/xinetd -- -inetd_compat -pidfile /var/run/xinetd.pid $XINETD_OPTS</code></span></p>
|
||||
|
||||
<p>Nochmal das Upgrade-Protokoll in Kurzfassung:<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">apt-get update<br />
|
||||
apt-get upgrade<br />
|
||||
apt-get install mc :)<br />
|
||||
apt-get dist-upgrade<br />
|
||||
<span style="font-style:italic"> /etc/apt/sources.list auf gutsy geändert</span><br />
|
||||
apt-get update<br />
|
||||
apt-get dist-upgrade<br />
|
||||
<span style="font-style:italic"> xinetd im inetd-Kompatibilitätsmodus starten: <a href="<a href="http://ubuntuforums.org/showthread.php?t=200408&page=2%22">http://ubuntuforums.org/showthread.php?t=200408&page=2"</a> rel="nofollow"><a href="http://ubuntuforums.org/showthread.php?t=200408&page=2</a></span>">http://ubuntuforums.org/showthread.php?t=200408&page=2</a></span></a><br />
|
||||
/etc/init.d/xinetd restart<br />
|
||||
reboot</div></div><br />
|
||||
<span style="font-size:30px"><br />
|
||||
</span></p>
|
||||
|
||||
<p>Quellen:<br />
|
||||
<a href="http://ubuntuforums.org/showthread.php?t=200408&page=2" rel="nofollow">http://ubuntuforums.org/showthread.php?t=200408&page=2</a></p>
|
||||
|
||||
<p>ps: Ein paar Dinge sind mir aber immer noch nicht ganz klar: Wie virtuell ist die Kiste bei Hosteurope jetzt eigentlich? Woher kommt der Kernel (/boot ist ja leer)? Und warum läuft auf einem vServer Samba?</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/143 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/160 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Zope unter Fedora 9 | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"O3KXMPUL-_4JaiYGQb1-MjkCPzLmsvT0yuolwfpOnBU","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-160 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Zope unter Fedora 9</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-160" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">10. August 2008 - 14:05 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Fedora 9 bringt nur Python 2.5, Zope benötigt z.Z. aber Python 2.4. Das Repository <a href="http://rpm.livna.org/" rel="nofollow">http://rpm.livna.org/</a> bietet alle nötigen Pakete.</p>
|
||||
|
||||
<p>Installation:<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">su -c 'rpm -ivh <a href="<a href="http://rpm.livna.org/livna-release-9.rpm">http://rpm.livna.org/livna-release-9.rpm</a>'<br />
|
||||
sudo" rel="nofollow"><a href="http://rpm.livna.org/livna-release-9.rpm">http://rpm.livna.org/livna-release-9.rpm</a>'<br />
|
||||
sudo</a> yum install compat-python24 compat-python24-devel compat-python24-elementtree compat-python24-imaging</div></div></p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/160 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,114 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/163 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Krasse Sache APC | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"YX1iCn882cQ6ZqZaDu3eYNlNHqyAp1Xycq3JPcf_ej0","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-163 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Krasse Sache APC</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-163" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">27. August 2008 - 0:43 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Aufgrund des <a href="http://programm.froscon.org/2008/events/277.de.html" rel="nofollow">Vortrags von Rasmus Lehrdorf</a> auf der FrOSCon 2008 hab ich mir mal kurz <a href="http://php.net/apc" rel="nofollow">APC</a>, den <em>Alternative PHP Cache</em> angesehen. Wollte damit nicht viel Zeit verbringen, aber unsere Drupal-Seiten auf siarp.de laufen eher langsam, weil der Drupal-Cache nur für anonyme Besucher funktioniert und wir alles schön personalisiert und geschützt haben. Zuerst bin ich auf <a href="http://buytaert.net/drupal-webserver-configurations-compared" rel="nofollow">einen etwas älteren Vergleich der Serverkonfigurationen für Drupal</a> gestoßen und das hat noch mehr Interesse für den APC geweckt. Den habe ich dann wie in dieser <a href="http://2bits.com/articles/installing-php-apc-gnulinux-ubuntu-gutsy-gibbon-710-and-debian.html" rel="nofollow">Anleitung</a> auf siarp.de installiert.</p>
|
||||
|
||||
<p>Ich bin davon ausgegangen, dass die Datenbank-Verbindung der Flaschenhals ist und habe nicht wirklich mit einer deutlichen Verbesserung gerechnet. Da wir nicht wirklich viel Speicher zur Verfügung haben, hätte ich an dieser Stelle sogar mit Nachteilen gerechnet.</p>
|
||||
|
||||
<p>Getestet habe ich den Unterschied auf <a href="http://www.dasgrillexamen.de/image" rel="nofollow">dem Grillexamen</a>, und zwar in der Gallerieliste, da dort die meisten Aufrufe an Drupal stattfinden (jedes Bild wird auf seine Berechtigungen geprüft).</p>
|
||||
|
||||
<p><strong>Das Ergbenis war eine Verbesserung der Ladezeit von <em>ca. 5 Sekunden</em> auf <em>gut 1 Sekunde</em>!</strong> Sensationell dafür, dass ich das nur schnell mal installiert habe. Der Speicherbedarf pro Apache Arbeiter ist von 14 MB auf 20 MB gestiegen - verkraftbar, denke ich.</p>
|
||||
|
||||
<p>Also, schöne Sache das. Vor allem das Verhältnis Aufwand - Effekt.</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/163 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,223 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/167 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Buildout-basiertes Zope2 (Plone) unter Debian/Ubuntu installieren | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"QthI8cnrtmXdNIQpDE9MhabOwPI60Zp5BSLArZJrIi4","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-167 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Buildout-basiertes Zope2 (Plone) unter Debian/Ubuntu installieren</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-167" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">7. September 2008 - 14:53 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><i>Ubuntu 8.04 Server / Plone 3.1.5.1</i></p>
|
||||
|
||||
<p><b>Voraussetzungen buildout:</b></p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ sudo aptitude install gcc python2.4 python2.4-dev python-imaging python-elementtree</div></div></p>
|
||||
|
||||
<p><i>(Für Ubuntu Desktop muss noch <span class="geshifilter"><code class="text geshifilter-text">zlib1g-dev</code></span> installiert werden.)</i></p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">Ergänzung von <a href="<a href="../167_/">http://siarp.de/node/167"</a> rel="nofollow"><a href="../167_/a_/">http://siarp.de/node/167</a></a> für Plone 3.3 unter Ubuntu Jaunty<br />
|
||||
========================================================================<br />
|
||||
<br />
|
||||
Ubuntu Jaunty enthält zwar Python 2.4 aber keine Image Library (PIL) für 2.4.<br />
|
||||
Diese kann auch als Egg mittels buildout installiert werden [1]. Dafür braucht<br />
|
||||
man die Header-Dateien von Python, libjpeg und zlib [2]:<br />
|
||||
<br />
|
||||
sudo aptitude install build-essential python2.4-dev zlib1g-dev libjpeg62-dev<br />
|
||||
<br />
|
||||
PIL gibt es zwar als offizielles Egg [3], doch nur die Version von der ZOPE-Site<br />
|
||||
"PILwoTk" funktioniert mir Plone. buildout.cfg sieht dann so aus:<br />
|
||||
<br />
|
||||
[buildout]<br />
|
||||
...<br />
|
||||
find-links += <a href="<a href="http://download.zope.org/distribution/">http://download.zope.org/distribution/</a><br />
|
||||
" rel="nofollow"><a href="http://download.zope.org/distribution/">http://download.zope.org/distribution/</a><br />
|
||||
</a> eggs += PILwoTk<br />
|
||||
...<br />
|
||||
<br />
|
||||
Zusätzlich kann das Problem auftauchen, dass sich ZOPE beschwert, es habe keine<br />
|
||||
Berechtigung seine Eier abzulegen (Permission denied: ... .python-eggs). Wenn<br />
|
||||
Eggs entpackt werden müssen, werden diese standardmäßig in ~/.python-eggs<br />
|
||||
abgelegt, was aber durch den Benutzer zope nicht erlaubt ist. Dafür kann man<br />
|
||||
PYTHON_EGG_CACHE im Buildout neu setzen [4]:<br />
|
||||
<br />
|
||||
[instance]<br />
|
||||
effective-user = zope<br />
|
||||
environment-vars = PYTHON_EGG_CACHE ${buildout:directory}/var/.python-eggs<br />
|
||||
...<br />
|
||||
<br />
|
||||
<br />
|
||||
[1] <a href="<a href="http://www.veit-schiele.de/dienstleistungen/technische-dokumentation/plone-entwicklerhandbuch/entwicklungsumgebung/erstellen-eines-buildout-projekts.html">http://www.veit-schiele.de/dienstleistungen/technische-dokumentation/plo...</a><br />
|
||||
" rel="nofollow"><a href="http://www.veit-schiele.de/dienstleistungen/technische-dokumentation/plone-entwicklerhandbuch/entwicklungsumgebung/erstellen-eines-buildout-projekts.html">http://www.veit-schiele.de/dienstleistungen/technische-dokumentation/plo...</a><br />
|
||||
</a>[2] <a href="<a href="https://svn.infrae.com/buildout/silva/INSTALL.txt">https://svn.infrae.com/buildout/silva/INSTALL.txt</a><br />
|
||||
" rel="nofollow"><a href="https://svn.infrae.com/buildout/silva/INSTALL.txt">https://svn.infrae.com/buildout/silva/INSTALL.txt</a><br />
|
||||
</a>[3] <a href="<a href="http://pypi.python.org/pypi/PIL">http://pypi.python.org/pypi/PIL</a><br />
|
||||
" rel="nofollow"><a href="http://pypi.python.org/pypi/PIL">http://pypi.python.org/pypi/PIL</a><br />
|
||||
</a>[4] <a href="<a href="http://plone.org/documentation/error/permission-denied-python-eggs">http://plone.org/documentation/error/permission-denied-python-eggs</a><br />
|
||||
" rel="nofollow"><a href="http://plone.org/documentation/error/permission-denied-python-eggs">http://plone.org/documentation/error/permission-denied-python-eggs</a><br />
|
||||
</a></div></div></p>
|
||||
|
||||
<p><b>Installation:</b></p>
|
||||
|
||||
<p>Ziel ist die systemweite Installation mit automatischem Start des Dienstes beim Booten. Zur Entwicklung und zum Testen reicht es, das ganze im Benutzer-Verzeichnis zu machen.</p>
|
||||
|
||||
<p>Zunächste wird der Code nach /opt kopiert:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ sudo svn co SERVER/PFAD/ PROJEKTNAME</div></div></p>
|
||||
|
||||
<p>Dann der Buildout installiert:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ cd PROJEKTNAME<br />
|
||||
$ sudo python2.4 bootstrap.py<br />
|
||||
$ sudo bin/buildout<br />
|
||||
$ sudo bin/instance fg</div></div></p>
|
||||
|
||||
<p>Läuft? Dann wollen wir das ganze noch dem User „zope“ zuordnen:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">sudo adduser zope</div></div></p>
|
||||
|
||||
<p>In buildout.cfg:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">[instance]<br />
|
||||
effective-user = zope</div></div></p>
|
||||
|
||||
<p>Das wird dann beim nächsten Aufruf von bin/buildout in zope.conf eingetragen. Beim Start durch <span class="geshifilter"><code class="text geshifilter-text">sudo bin/instance start</code></span> wird nun „zope“ als User des Prozesses verwendet.</p>
|
||||
|
||||
<p><b>Start beim Hochfahren:</b></p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ sudo vim /etc/init.d/PROJEKTNAME<br />
|
||||
<br />
|
||||
#!/bin/bash<br />
|
||||
cd /opt/PROJEKTNAME<br />
|
||||
bin/instance start<br />
|
||||
<br />
|
||||
$ sudo chmod +x /etc/init.d/PROJEKTNAME<br />
|
||||
$ update-rc.d PROJEKTNAME defaults</div></div></p>
|
||||
|
||||
<p>Quelle: <a href="http://ubuntu.wordpress.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/" rel="nofollow">http://ubuntu.wordpress.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/</a></p>
|
||||
|
||||
<p><b>Hinter Apache laufen lassen (Reverse Proxy):</b></p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">$ sudo aptitude install apache2<br />
|
||||
$ sudo vim /etc/apache2/sites-available/PROJEKTNAME<br />
|
||||
<br />
|
||||
NameVirtualHost *:80<br />
|
||||
<br />
|
||||
<VirtualHost *:80><br />
|
||||
ServerName HOST<br />
|
||||
DocumentRoot /var/www/<br />
|
||||
RewriteEngine On<br />
|
||||
<br />
|
||||
<Proxy *><br />
|
||||
Order deny,allow<br />
|
||||
Deny from all<br />
|
||||
Allow from HOST<br />
|
||||
</Proxy><br />
|
||||
<br />
|
||||
RewriteEngine On<br />
|
||||
RewriteRule ^(.*) <a href="http://localhost:8080/VirtualHostBase/http/HOST:80/PLONESITENAME/VirtualHostRoot">http://localhost:8080/VirtualHostBase/http/HOST:80/PLONESITENAME/Virtual...</a>$1 [L,P]<br />
|
||||
<br />
|
||||
CustomLog /var/log/apache2/access.log combined<br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
$ sudo a2enmod proxy<br />
|
||||
$ sudo a2enmod proxy_http<br />
|
||||
$ sudo a2enmod rewrite<br />
|
||||
$ sudo a2ensite PROJEKTNAME<br />
|
||||
$ sudo /etc/init.d/apache2 restart</div></div><br />
|
||||
</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/167 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<title>Page not found | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="http://siarp.de/sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"DzMoOhBXowrCTBPoRV1YtXtv02zBFQ7kuDYdi1sukRY","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in no-sidebars page-node page-node-167 page-node-167-a fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="/">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Page not found</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
The requested page "/node/167</a>" could not be found. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<title>Page not found | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="http://siarp.de/sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"fe87zAA8tAzXOWpGXLL4N3B3OSUdRrTuaRioDpladdw","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in no-sidebars page-node page-node-167 fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="/">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Page not found</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
The requested page "/node/167%22" could not be found. </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,346 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/174 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:18 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Informatiker-Zeitvertreib | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"4CaClrr7qOE9NQ62i0tE58kjsGurno38nSnnqdT4N7c","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-174 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Informatiker-Zeitvertreib</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-174" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">11. January 2009 - 21:33 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Am 1.1. wollte Bettina unbedingt "Mensch ärgere dich nicht" spielen. Ich war nicht so begeistert, weil ich das Spiel für ziemlich langweilig halte. Zunächst diskutierten wir also meinen Standpunkt ("Da würfelt man doch nur abwechselnd") und den von Bettina ("Gar nicht, das hat voll viel mit Taktik zu tun"). Schlussendlich haben wir dann drei Runden gespielt. Später hatten wir Hunger und da nichts zu Essen im Haus war, haben wir uns Happy Meals bei McDonald's geholt. Als Spielzeug gab es "Monopoly Junior", also wurde auch das gespielt. Im Vergleich zum normalen Monopoly geht es deutlich vereinfacht zu - wenn man auf einer Straße ohne Besitzer landet kauft man und markiert sie mit einem Haus - zusätzliche Häuser kann man nicht erwerben.</p>
|
||||
|
||||
<p><img src="../../sites/siarp.de/files/monopoly_junior.jpg" alt="Monopoly Junior" title="Monopoly Junior" /></p>
|
||||
|
||||
<p>Das Spiel war ganz lustig und ich hatte zunächst das Gefühl, sehr viel mehr Kontrolle über mein Schicksal als bei "Mensch ärgere dich nicht" zu haben. Schließlich hatte man Geldscheine in der Hand, konnte Straßen kaufen und musste Miete bezahlen. Aber nach einer Weile dämmerte mir, dass durch die vereinfachten Regeln das Ganze mehr einer griechischen Tragödie ähnelt: das Schicksal ist vorherbestimmt. Schließlich <em>muss</em> man kaufen, wenn man auf einer Straße ohne Besitzer landet und gezieltes Investieren ist durch die Nur-ein-Haus-Regel auch nicht möglich. Also schlimmer als "Mensch ärgere dich nicht", bei dem man immerhin noch überlegen kann, wo man seine erwürfelten Punkte am besten investiert; nämlich dort, wo die Chance am geringsten ist, sie wieder zu verlieren.
|
||||
Außerdem fiel uns auf, dass bei uns immer der Spieler die Partie gewann, der als erster gezogen hatte. Ist es wirklich so ein Vorteil, die erste Runde vor dem anderen herzulaufen oder war das Zufall?
|
||||
Da inzwischen klar war, dass es - anders als bei "Mensch ärgere dich nicht" - <em>wirklich</em> nur um abwechselndes Würfeln geht und man <em>absolut keinen Einfluss</em> auf den Spielverlauf hat (verbotenes Glücksspiel!), war die nächste Neujahrsbeschäftigung schnell gefunden: Wir haben eine Monopoly-Junior-Simulation geschrieben um herauszufinden, wie deutlich sich der Startvorteil auswirkt (wenn es ihn denn gibt).
|
||||
Nach zwei Stunden programmieren und 1.000.000 simulierten Spielen hatten wir das Ergebnis:</p>
|
||||
|
||||
<p><strong>Gewinnchancen bei Monopoly Junior:</strong></p>
|
||||
|
||||
<p>Bei zwei Spielern:
|
||||
Spieler 1: 57.24%
|
||||
Spieler 2: 41.50%
|
||||
Unentschieden: 1.26%</p>
|
||||
|
||||
<p>Bei drei Spielern:
|
||||
Spieler 1: 42.62%
|
||||
Spieler 2: 30.96%
|
||||
Spieler 3: 23.80%
|
||||
Unentschieden: 2.62%</p>
|
||||
|
||||
<p>Bei vier Spielern:
|
||||
Spieler 1: 34.35%
|
||||
Spieler 2: 25.20%
|
||||
Spieler 3: 19.13%
|
||||
Spieler 4: 14.96%
|
||||
Unentschieden: 6.36%</p>
|
||||
|
||||
<p>Also: Immer bei Monopoly Junior als erster ziehen und mit möglichst vielen Leuten spielen (die man am besten abwechselnd auf unterschiedlichen Positionen starten lässt). Das ist kein Schummeln - nur ein schlechtes Spieldesign.</p>
|
||||
|
||||
<p>Und für alle, die diese bahnbrechenden Ergebnisse überprüfen wollen, hier noch der Quellcode:</p>
|
||||
|
||||
<div class="geshifilter"><div class="java geshifilter-java"><span class="kw1">package</span> <span class="co2">mcmonopolyjunior</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">java.util.Random</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* Simuliert das Spiel Monopoly Junior (aus dem McDonald's Happy Meal)<br />
|
||||
* um herauszufinden, wie sehr die Gewinnchancen von der Startposition<br />
|
||||
* des Spielers abhängen. Da man bei diesem Spiel keinen taktischen<br />
|
||||
* Entscheidungsspielraum hat, lässt es sich vollständig simulieren.<br />
|
||||
* <br />
|
||||
* Wie sich bei den Simulationen gezeigt hat, kann das Spiel ins Leere<br />
|
||||
* laufen: Es kann so lange keinen Gewinner geben, dass die Bank kein Geld<br />
|
||||
* mehr hat. Setzt für die Bank Liquidität voraus (unendlich viel Geld<br />
|
||||
* im Spiel), so kann es passieren, dass die Spieler so viel Geld<br />
|
||||
* ansammeln, dass die Partie in eine Endlosschleife gerät. Deshalb wird<br />
|
||||
* ein unentschieden angenommen, wenn ein Spieler mehr Geld hat, als die<br />
|
||||
* Bank im realen Spiel (100$).<br />
|
||||
* Wenn zwei Spieler gleich viel Geld haben, wenn die Partie endet, wird<br />
|
||||
* ebenfalls ein Unentschieden gezählt.<br />
|
||||
* <br />
|
||||
* @author Bettina Selig und Tilman Walther<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw1">class</span> McMonopolyJunior <span class="br0">{</span><br />
|
||||
<br />
|
||||
<span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span> money<span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span> position<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span> rent <span class="sy0">=</span> <span class="br0">{</span> <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">3</span>, <span class="nu0">4</span>, <span class="nu0">4</span>, <span class="nu0">5</span> <span class="br0">}</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span><span class="br0">[</span><span class="br0">]</span> streets <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">int</span><span class="br0">[</span><span class="nu0">8</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> jackpot<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+random"><span class="kw3">Random</span></a> rnd <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+random"><span class="kw3">Random</span></a><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">boolean</span> gameOver<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">public</span> <span class="kw4">int</span> simulate<span class="br0">(</span><span class="kw4">int</span> numPlayers<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>numPlayers <span class="sy0"><</span> <span class="nu0">2</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>numPlayers <span class="sy0">></span> <span class="nu0">4</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">err</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">"Diese Spielerzahl ist nicht möglich."</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">exit</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
gameOver <span class="sy0">=</span> <span class="kw2">false</span><span class="sy0">;</span><br />
|
||||
money <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">int</span><span class="br0">[</span>numPlayers<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
position <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">int</span><span class="br0">[</span>numPlayers<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw4">int</span> budget<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>numPlayers <span class="sy0">==</span> <span class="nu0">2</span><span class="br0">)</span><br />
|
||||
budget <span class="sy0">=</span> <span class="nu0">25</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>numPlayers <span class="sy0">==</span> <span class="nu0">3</span><span class="br0">)</span><br />
|
||||
budget <span class="sy0">=</span> <span class="nu0">20</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span><br />
|
||||
budget <span class="sy0">=</span> <span class="nu0">15</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> numPlayers<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">=</span> budget<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> streets.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
streets<span class="br0">[</span>i<span class="br0">]</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
streets<span class="br0">[</span>i<span class="br0">]</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co1">// Spielen!</span><br />
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="sy0">!</span>gameOver<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> <span class="br0">(</span>i <span class="sy0"><</span> numPlayers<span class="br0">)</span> <span class="sy0">&&</span> <span class="br0">(</span><span class="sy0">!</span>gameOver<span class="br0">)</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
move<span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co1">// Abbruchbedingung: Wenn ein Spieler mehr Dollar hat, als die Bank ursprünglich besitzt,</span><br />
|
||||
<span class="co1">// wird das Spiel nicht gewertet</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> numPlayers<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>money<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">></span> <span class="nu0">100</span><span class="br0">)</span><br />
|
||||
<span class="kw1">return</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw4">int</span> winner <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> i <span class="sy0"><</span> numPlayers<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>money<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">></span> money<span class="br0">[</span>winner<span class="br0">]</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
winner <span class="sy0">=</span> i<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>money<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">==</span> money<span class="br0">[</span>winner<span class="br0">]</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="co1">// bei einem Unentschieden wird das Spiel nicht gewertet</span><br />
|
||||
<span class="kw1">return</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">return</span> winner<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw4">void</span> move<span class="br0">(</span><span class="kw4">int</span> player<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">=</span> position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">+</span> rnd.<span class="me1">nextInt</span><span class="br0">(</span><span class="nu0">6</span><span class="br0">)</span> <span class="sy0">+</span> <span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// Ziehen über Start</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">></span> <span class="nu0">27</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
|
||||
position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">=</span> position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">%</span> <span class="nu0">28</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co1">// nochmals ziehen</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">3</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">11</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">17</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">25</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
move<span class="br0">(</span>player<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="co1">// 2$ bekommen</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">4</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">18</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="co1">// 2$ bezahlen</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">7</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">21</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">-=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="co1">// Jackpot einziehen</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">14</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">+=</span> jackpot<span class="sy0">;</span><br />
|
||||
jackpot <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="co1">// McDonald's-Gefängnis</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">2</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">-=</span> <span class="nu0">3</span><span class="sy0">;</span><br />
|
||||
jackpot <span class="sy0">+=</span> <span class="nu0">3</span><span class="sy0">;</span><br />
|
||||
position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">8</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="co1">// Straße kaufen / Miete zahlen</span><br />
|
||||
<span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
<span class="kw4">int</span> street<span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> house<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">5</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">9</span><span class="br0">)</span> <span class="sy0">||</span><br />
|
||||
<span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">12</span><span class="br0">)</span> <span class="sy0">||</span><span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">15</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">19</span><span class="br0">)</span> <span class="sy0">||</span><br />
|
||||
<span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">23</span><span class="br0">)</span> <span class="sy0">||</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">26</span><span class="br0">)</span><span class="br0">)</span><br />
|
||||
house <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span><br />
|
||||
house <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">3</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">7</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">11</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">2</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">14</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">3</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">17</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">4</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">21</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">5</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>position<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">25</span><span class="br0">)</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">6</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span><br />
|
||||
street <span class="sy0">=</span> <span class="nu0">7</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span>house<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">-=</span> rent<span class="br0">[</span>street<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span>house<span class="br0">]</span> <span class="sy0">=</span> player<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span>house<span class="br0">]</span> <span class="sy0">!=</span> player<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">!=</span> streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">-=</span> rent<span class="br0">[</span>street<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
money<span class="br0">[</span>streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span>house<span class="br0">]</span><span class="br0">]</span> <span class="sy0">+=</span> rent<span class="br0">[</span>street<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">-=</span> <span class="nu0">2</span><span class="sy0">*</span>rent<span class="br0">[</span>street<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
money<span class="br0">[</span>streets<span class="br0">[</span>street<span class="br0">]</span><span class="br0">[</span>house<span class="br0">]</span><span class="br0">]</span> <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">*</span>rent<span class="br0">[</span>street<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0"><</span> <span class="nu0">0</span><span class="br0">)</span><br />
|
||||
gameOver <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>money<span class="br0">[</span>player<span class="br0">]</span> <span class="sy0">></span> <span class="nu0">100</span><span class="br0">)</span><br />
|
||||
gameOver <span class="sy0">=</span> <span class="kw2">true</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<br />
|
||||
<span class="kw4">int</span> numPlayers <span class="sy0">=</span> <span class="nu0">4</span><span class="sy0">;</span> <span class="co1">// Anzahl der Spieler (1 bis 4)</span><br />
|
||||
<span class="kw4">int</span> numRuns <span class="sy0">=</span> <span class="nu0">1000000</span><span class="sy0">;</span> <span class="co1">// Anzahl der simulierten Spiele</span><br />
|
||||
<br />
|
||||
McMonopolyJunior monopoly <span class="sy0">=</span> <span class="kw1">new</span> McMonopolyJunior<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span> wins <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">int</span><span class="br0">[</span>numPlayers<span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> draws <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> numRuns<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw4">int</span> winner <span class="sy0">=</span> monopoly.<span class="me1">simulate</span><span class="br0">(</span>numPlayers<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>winner <span class="sy0">>=</span> <span class="nu0">0</span><span class="br0">)</span><br />
|
||||
wins<span class="br0">[</span>winner<span class="br0">]</span><span class="sy0">++;</span><br />
|
||||
<span class="kw1">else</span><br />
|
||||
draws<span class="sy0">++;</span> <br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">"Chancenverteilung:"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> numPlayers<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">" Spieler "</span><span class="sy0">+</span><span class="br0">(</span>i<span class="sy0">+</span><span class="nu0">1</span><span class="br0">)</span><span class="sy0">+</span><span class="st0">": "</span><span class="sy0">+</span><span class="br0">(</span>wins<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">*</span> <span class="nu0">100.0</span> <span class="sy0">/</span> numRuns<span class="br0">)</span><span class="sy0">+</span><span class="st0">"%"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">" Unentschieden: "</span><span class="sy0">+</span><span class="br0">(</span>draws <span class="sy0">*</span> <span class="nu0">100.0</span> <span class="sy0">/</span> numRuns<span class="br0">)</span><span class="sy0">+</span><span class="st0">"%"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="br0">}</span></div></div>
|
||||
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/jpeg" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/monopoly_junior.jpg" type="image/jpeg; length=61619" title="monopoly_junior.jpg">monopoly_junior.jpg</a></span></td><td>60.17 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/174 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:20 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,136 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/179 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:18 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Drupal-Tutorial: Administratoren-Blog | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"9PGKRlWxkxz3xbj-IP7HJhboGxFNl3ZvHFdEj6OXOE4","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-179 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Drupal-Tutorial: Administratoren-Blog</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-179" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">12. January 2009 - 21:12 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Für das Siarp-Portal (derzeit Drupal 5) wollten wir eine Möglichkeit haben, Meldungen oder Nachrichten zu kommunizieren, die über Vorgänge bei Projekten wie der Server-Administration oder auch dem Siarp-Portal selber informieren. Da das eher einem ausführlichen Changelog ähnelt sollte, wollten wir es nicht über das <a href="http://drupal.org/project/project_issue" rel="nofollow">Project-Modul</a> laufen lassen. Eher eine Art Blog mit bestimmten Rechten und Einstellungen und einer gesonderten Ansicht, wofür Drupal ja bestens ausgerüstet ist.<br />
|
||||
<!--break--><br />
|
||||
<h2>Inhaltstyp</h2></p>
|
||||
|
||||
<p>Zunächst habe ich einen neuen Inhaltstyp angelegt:</p>
|
||||
|
||||
<p>Inhaltsverwaltung > Inhaltstypen > Inhaltstyp hinzufügen:<br />
|
||||
<ul><br />
|
||||
<li>Name: „Nachricht“</li><br />
|
||||
<li>Typ: „message“</li><br />
|
||||
<li>soll nicht auf Startseite angezeigt werden</li><br />
|
||||
</ul></p>
|
||||
|
||||
<p>Ggf. noch Berechtigungen für den neuen Typ setzen (benutzerverwaltung > Zugriffskontrolle).</p>
|
||||
|
||||
<h2>Zugriffskontrolle</h2>
|
||||
|
||||
<p>Drupal ermöglicht es zwar, Erstellen- und Bearbeiten-Berechtigungen separat für den neuen Inhaltstyp zu setzen, nicht aber die Ansehen-Berechtigung („view“). Wir wollen aber, dass nur Benutzer einer bestimmten Rolle auf die Meldungen zugreifen können.</p>
|
||||
|
||||
<p>Dafür habe ich aus den <a href="http://drupal.org/node/268100#comment-875260" rel="nofollow">zahlreichen</a> <a href="http://drupal.org/project/Modules/category/74" rel="nofollow">Zugriffsbeschränkungsmodulen</a> <a href="http://drupal.org/project/content_access" rel="nofollow">Content Access</a> herausgesucht, weil es ziemlich genau (nur) das macht, was ich brauche und das attraktiv wirkende <a href="http://drupal.org/project/node_access_control" rel="nofollow">Node Access Control</a> noch nicht auf Drupal 6 portiert ist, was zukünftig aber wichtig sein dürfte und es außerdem anscheinend auch sonst nicht ganz so zielstrebig weiterentwickelt wird.</p>
|
||||
|
||||
<p>Nach der Installation von Content Access 5.x-1.5 gibt es bei den Einstellungen zum Inhaltstyp einen Reiter „Zugriffskontrolle“, wo nun die Rechte für die Rollen gesetzt werden können.</p>
|
||||
|
||||
<h2>Ansichten</h2>
|
||||
|
||||
<p>Um die Ansichten der Meldungen umzusetzen, habe ich auf <a href="http://drupal.org/project/views" rel="nofollow">Views</a> zurückgegriffen. Die Ansicht (Strukturierung > Ansichten > Hinzufügen) enthält eine Seite mit Teaser List und einen Block mit List View. Für die Seite lasse ich einen Menüeintrag anlegen. Für die List View im Block definiere ich das Feld „Node Title“. Dann noch nach „Node: Type“ filtern und als Sortierkriterium das Erstellungsdatum absteigend wählen.</p>
|
||||
|
||||
<p>Um einen RSS-Feed zu erzeugen habe ich noch unter „Argumente“ „RSS: RSS Feedauswahl“ („Alle Werte anzeigen“) hinzugefügt.</p>
|
||||
|
||||
<p>Nun muss noch der Block aktiviert und platziert werden (Strukturierung > Blöcke). Für unser Nachrichtensystem gebe ich dem Benutzer die Möglichkeit, den Block zu deaktivieren.<br />
|
||||
</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/179 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:18 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/187 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Ubuntu-Installation: den größten freien Speicherbereich benutzen | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"JFU1u-NEnnauaGo0A4FT9LbKcnu_wNYAjfljzQW6b2k","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-187 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Ubuntu-Installation: den größten freien Speicherbereich benutzen</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-187" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">16. January 2009 - 0:34 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Installiert man Ubuntu zum ersten Mal auf einem Windows-Rechner ist die Auswahl bei der Partitionierung der Festplatte meist einfach: erste Partition verkleinern und den freigewordenen Platz zur Installation nutzen. Wenn man wie ich aber schon zum hundertsten Male (oder zum zweiten Mal) eine Linux-Distribution auf so einem Rechner installiert, möchte man den irgendwann mal erstellten Bereich jenseits von Windows nutzen.</p>
|
||||
|
||||
<p>Ubuntu (hier 8.10) mag es meiner Erfahrung nach nicht so, wenn es außer der Windows-Partition noch weitere gibt (die überschrieben werden sollen). Deshalb habe ich Windows noch mal gestartet (wenn es Probleme mit den Überresten eines Bootloaders - „Grub“ - gibt, Windows-CD rein und in der Rettungskonsole <span class="geshifilter"><code class="text geshifilter-text">fixmbr</code></span>) und dort in der Datenträgerverwaltung alle zusätzlichen Partitionen gelöscht. (An dieser Stelle muss ich mal sagen, dass es bestimmt eleganter und besser geht, aber ich habe einfach keinen Bock, mich ernsthaft mit der Partitionierung auseinander zu setzen und deshalb meide ich auch die „manuelle“ Partitionierung.)</p>
|
||||
|
||||
<p><strong>In dieser Konstellation ist die Einstellung „den größten freien Speicherbereich benutzen“ zu wählen.</strong> Das wollte ich eigentlich nur sagen. Denn die folgende Grafik fand ich sehr irreführend ich habe doch gezögert, weil ich befüchtete, die gesamte Festplatte zu löschen. Nein, es wird wirklich nur der in der oberen Zeile in weiß dargestellte „Free Space“ genutzt und nicht wie uns die untere Zeile zu sagen scheint die ganze Platte! Vor!</p>
|
||||
|
||||
<p><img src="../../sites/siarp.de/files/ubuntu_free_space.png" alt="Ubuntu-Installation: den größten freien Speicherbereich benutzen" /></p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/187 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:18 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/191 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Borland Real48 in Java | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"EzZ_0tfXitx9LzPnUlFs6QLpb0B0zzteIPh4jbcTlt4","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-191 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Borland Real48 in Java</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-191" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">24. January 2009 - 9:47 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>When writing a converter tool for a binary file format, I had problems reading some of the floating point numbers. After a little bit of research I found out that this very special format was used in programs written in Borland Pascal/Delphi. Since I couldn't find any Java class that's able to read this kind of number I wrote it myself.</p>
|
||||
|
||||
<p>As far as I remember these are basically reverse IEEE floating point numbers of six bytes. (It's been a while since I wrote this. See the PDF file by Richard Biffl for a detailed description of the format.)</p>
|
||||
|
||||
<p>References:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://www.wotsit.org/list.asp?search=Borland+Pascal+Real&button=GO!" title="Borland Pascal Real format information and C code">Borland Pascal Real format information and C code by Richard Biffl on wotsit.org</a></li>
|
||||
<li><a href="http://mail.python.org/pipermail/python-list/2001-December/117947.html" title="Algorithms for 6-byte ('real48') Borland Pascal Floating Point numbers">Real48 in Python by Martin Bless</a></li>
|
||||
</ul>
|
||||
|
||||
<p>And here is the code:</p>
|
||||
|
||||
<div class="geshifilter"><div class="java geshifilter-java"><span class="kw1">package</span> <span class="co2">de.tilman.util</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">java.math.BigDecimal</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* A class for representation and conversion of 6-byte/48-bit floating<br />
|
||||
* point numbers used in Borland Pascal/Delphi.<br />
|
||||
* <br />
|
||||
* @author Tilman Walther<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw1">class</span> Real48 <span class="br0">{</span><br />
|
||||
<br />
|
||||
<span class="kw4">char</span><span class="br0">[</span><span class="br0">]</span> bytes<span class="sy0">;</span><br />
|
||||
<span class="kw4">double</span> value<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* Represents a number in Real48 format.<br />
|
||||
* <br />
|
||||
* @param bytes the byte values of the number<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> Real48<span class="br0">(</span><span class="kw4">char</span><span class="br0">[</span><span class="br0">]</span> bytes<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">this</span>.<span class="me1">bytes</span> <span class="sy0">=</span> bytes<span class="sy0">;</span><br />
|
||||
<span class="kw1">this</span>.<span class="me1">value</span> <span class="sy0">=</span> Real48.<span class="me1">getDoubleFromBytes</span><span class="br0">(</span>bytes<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* Returns the value of the number as double.<br />
|
||||
* <br />
|
||||
* @return the number as double<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw4">double</span> getDoubleValue<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">return</span> value<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* Returns the byte values of the Real48 as char[].<br />
|
||||
* <br />
|
||||
* @return the byte values<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw4">char</span><span class="br0">[</span><span class="br0">]</span> getBytes<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">return</span> bytes<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* Converts a Real48 in a double.<br />
|
||||
* <br />
|
||||
* @param bytes the number in Real48 format<br />
|
||||
* @return the number as double<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">double</span> getDoubleFromBytes<span class="br0">(</span><span class="kw4">char</span><span class="br0">[</span><span class="br0">]</span> bytes<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw4">long</span><span class="br0">[</span><span class="br0">]</span> real48 <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">long</span><span class="br0">[</span><span class="nu0">6</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
real48<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span> <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// get sign</span><br />
|
||||
<span class="kw4">long</span> sign <span class="sy0">=</span> <span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">&</span> 0x80<span class="br0">)</span> <span class="sy0">>></span> <span class="nu0">7</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// get significand</span><br />
|
||||
<span class="kw4">long</span> significand <span class="sy0">=</span> <span class="br0">(</span><span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy0">%</span> 0x80<span class="br0">)</span> <span class="sy0"><<</span> <span class="nu0">32</span><span class="br0">)</span><br />
|
||||
<span class="sy0">+</span> <span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span> <span class="sy0"><<</span> <span class="nu0">24</span><span class="br0">)</span><br />
|
||||
<span class="sy0">+</span> <span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy0"><<</span> <span class="nu0">16</span><span class="br0">)</span><br />
|
||||
<span class="sy0">+</span> <span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy0"><<</span> <span class="nu0">8</span><span class="br0">)</span><br />
|
||||
<span class="sy0">+</span> <span class="br0">(</span>real48<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// get exponent</span><br />
|
||||
<span class="kw4">long</span> exponent <span class="sy0">=</span> bytes<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// if the exponent is zero the real represents zero, too</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>exponent <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">return</span> <span class="nu0">0.0</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="co1">// convert exponent (bias for Real48 is 129, bias for IEEE 754-double is 1023)</span><br />
|
||||
exponent <span class="sy0">+=</span> <span class="nu0">894</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw4">long</span> bits <span class="sy0">=</span> <span class="br0">(</span>sign <span class="sy0"><<</span> <span class="nu0">63</span><span class="br0">)</span> <span class="sy0">+</span> <span class="br0">(</span>exponent <span class="sy0"><<</span> <span class="nu0">52</span><span class="br0">)</span> <span class="sy0">+</span> <span class="br0">(</span>significand <span class="sy0"><<</span> <span class="nu0">13</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw4">double</span> value <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+double"><span class="kw3">Double</span></a>.<span class="me1">longBitsToDouble</span><span class="br0">(</span>bits<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// since Real48 has only a precision of 11 we need to set all digits > 11 to zero</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal"><span class="kw3">BigDecimal</span></a> bd <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal"><span class="kw3">BigDecimal</span></a><span class="br0">(</span>value<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
bd <span class="sy0">=</span> bd.<span class="me1">setScale</span><span class="br0">(</span><span class="nu0">11</span>, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bigdecimal"><span class="kw3">BigDecimal</span></a>.<span class="me1">ROUND_DOWN</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">return</span> bd.<span class="me1">doubleValue</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="br0">}</span></div></div>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/191 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/194 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Erste Erfahrungen in 64 Bit | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"Xw3Luz4858JXedzrDQ_ty6PsW1MOuqxIMhG5DwrG3oM","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-194 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Erste Erfahrungen in 64 Bit</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-194" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">1. February 2009 - 16:26 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Seit ein paar Tagen bin ich auf Windows Vista umgestiegen. Und um ganz vorne mit dabei zu sein, durfte es gleich die 64-Bit-Variante sein - ich denke es ist absehbar, wann man sich über mehr als vier GB Arbeitsspeicher freuen wird. Bisher sind die Erfahrungen ganz gut, ein paar Ecken und Kanten gibt es aber:</p>
|
||||
|
||||
<ol>
|
||||
<li>Das Java SDK gibt es für 64-Bit-Systeme, aber Eclipse streikt. <em>(Exit Code=-1)</em> Zwar kann man ein 64-Bit-Eclipse aus dem aktuellen Entwicklungszweig auschecken, aber dann hat man bei den meisten Plugins wohl schlechte Karten. Zuviel Aufwand, es bleibt bei 32-Bit Java und dem normalen Eclipse. (Hinzu kommt, dass man sowieso ein 32-Bit-JRE braucht, wenn man Java z.B. in Firefox nutzen möchte.)</li>
|
||||
<li>Manche Software wird von Vista etwas verwirrt. Grundsätzlich werden Programme zwar schön nach alter und neuer Architektur in verschiedene Ordner einsortiert, aber unter der Haube wird es etwas verwirrend. AutoMDK braucht beispielsweise die <em>libsndfile-1.dll</em>, die normalerweise beim ersten Start nach <em>C:\Windows\system32</em> kopiert wird. Nur unter Vista 64 hilft das leider wenig: Der Ordner <em>system32</em> existiert zwar noch, ist aber für 64-Bit-Komponenten vorgesehen. Alte 32-Bit-DLLs gehören in <em>C:\Windows\SysWOW64</em>. Die Ordnernamen ergeben zwar absolut keinen Sinn, aber Tatsache ist, dass AutoMKV glücklich ist, sobald die DLL in SysWOW64 liegt. Und ich damit auch.
|
||||
(<a href="http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx">Gefunden bei codeproject.com</a>: "That's because 64-bit Windows still uses the C:\windows\system32 directory for native applications. Oddly enough, this misnamed directory is for 64-bit apps only!")</li>
|
||||
</ol>
|
||||
|
||||
<p>Mal sehen, was sonst noch so kommt.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/194 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,452 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/196 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:12 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Using AppleScript and cURL to import Content from iPhoto into Drupal | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"gCW2x2SDT3XFdH1PNqCvlbb1tW7BMfme6fIHwusjp7g","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-196 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Using AppleScript and cURL to import Content from iPhoto into Drupal</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-196" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">7. February 2009 - 23:25 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>I'm using Apple's iPhoto to organize my private photographs and Drupal is what comes to my mind first when there's need for a web-based solution. Having lots of pictures from a recent trip I want to show people I started thinking about some kind of web gallery. Being a developer I need to come up with something fancier than just some stock gallery product like <a href="http://gallery.menalto.com/">Gallery2</a> (actually I don't really know that product so bear with me). I did some research and found some article about different approaches to build photo galleries in Drupal and also a nice <a href="http://blip.tv/file/256997">video tutorial</a>. I've used image module and gallery module before but the flexibility that CCK extended by imagefield and imagecache and views seem to offer is just too tempting.
|
||||
<!--break-->
|
||||
But how would I get my hundreds of pictures imported into my yet-to-be-built gallery site? There are plenty of exporter plug-ins for iPhoto sending pictures to galleries like said Gallery2, Flickr and so on. I did not find much information on how to write a plug-in for iPhoto but I found some <a href="http://ruk.ca/article/2604">AppleScript code</a> that did just an export to Drupal. This one seemed to be very outdated but it was a good start. I started a <a href="http://lists.drupal.org/pipermail/development/2009-February/031849.html">thread on the Drupal developer mailing list</a> which gave me interesting options but I stayed with the concept of using cURL because it's the most flexible and probably the fasted way for my one-time requirement and there are no dependencies. The missing piece was this <a href="http://drupal.org/node/80548">handbook page</a> on d.o.</p>
|
||||
|
||||
<p><em><strong>Note</strong>: The following is a kind of tutorial but the result is just a custom script that needs to be adjusted to your scenario.</em></p>
|
||||
|
||||
<p>AppleScript is probably not the most powerful language but it allows us to call shell scripts. The idea is to get all the image information from iPhoto and then use shell commands to upload to a Drupal site. The first step is to extract the cURL commands from the PHP code from the handbook page so I don't need a separate script. Here are the shell commands to create content on a Drupal site:</p>
|
||||
|
||||
<p>First we log in which means getting a cookie with session data.</p>
|
||||
|
||||
<div class="geshifilter"><div class="bash geshifilter-bash">curl http:<span class="sy0">//</span>localhost<span class="sy0">/</span>drupal<span class="sy0">/</span>?<span class="re2">q</span>=user \<br />
|
||||
<span class="re5">-s</span> \<br />
|
||||
<span class="re5">-c</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">-b</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'name=user'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'pass=pass'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'form_id=user_login'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'op=Log in'</span> \<br />
|
||||
<span class="re5">--output</span> ~<span class="sy0">/</span>response_login.html</div></div>
|
||||
|
||||
<p>This calls the user page with your username and password. Check <span class="geshifilter"><code class="text geshifilter-text">response_login.html</code></span> to see if this has been successful.</p>
|
||||
|
||||
<p>Next we need to get the security token of the content creation form.</p>
|
||||
|
||||
<div class="geshifilter"><div class="bash geshifilter-bash">curl http:<span class="sy0">//</span>localhost<span class="sy0">/</span>drupal<span class="sy0">/</span>?<span class="re2">q</span>=node<span class="sy0">/</span>add<span class="sy0">/</span>image \<br />
|
||||
<span class="re5">-s</span> \<br />
|
||||
<span class="re5">-c</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">-b</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">--output</span> ~<span class="sy0">/</span>response_create_form.html</div></div>
|
||||
|
||||
<p>I'm using a custom content type called "image" – substitute that with whatever your content type is. <span class="geshifilter"><code class="text geshifilter-text">response_create_form.html</code></span> contains the HTML form to add an image including the security token which we can extract using a perl regular expression:</p>
|
||||
|
||||
<div class="geshifilter"><div class="perl geshifilter-perl"><a href="http://perldoc.perl.org/functions/s.html"><span class="kw3">s</span></a><span class="sy0">/.</span><span class="re0">*edit</span><span class="sy0">-</span>image<span class="sy0">-</span>node<span class="sy0">-</span>form<span class="sy0">-</span>form<span class="sy0">-</span>token<span class="st0">" *value="</span><span class="br0">(</span><span class="br0">[</span><span class="sy0">^</span><span class="st0">"]*)"</span><span class="sy0">.*/</span><span class="co3">$1</span><span class="sy0">/</span><a href="http://perldoc.perl.org/functions/s.html"><span class="kw3">s</span></a></div></div>
|
||||
|
||||
<p>Finally we actually upload our content.</p>
|
||||
|
||||
<div class="geshifilter"><div class="bash geshifilter-bash">curl http:<span class="sy0">//</span>localhost<span class="sy0">/</span>drupal<span class="sy0">/</span>?<span class="re2">q</span>=node<span class="sy0">/</span>add<span class="sy0">/</span>image \<br />
|
||||
<span class="re5">-s</span> \<br />
|
||||
<span class="re5">-c</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">-b</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>curl-cookies.txt \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'title=My Title'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'field_image[0][fid]=0'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'field_image[0][list]=1'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'files[field_image_0]=@/Users/me/myimage.jpg'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'body=My content.'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'name=Myself'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'status=1'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'revision=1'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'op=Save'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'form_id=image_node_form'</span> \<br />
|
||||
<span class="re5">-F</span> <span class="st_h">'form_token=63fe773e820d2a4565720ab3bd0fc991'</span> \</div></div>
|
||||
|
||||
<p>Check your Drupal site – there should be new content. My content type contains an <a href="http://drupal.org/project/imagefield">imagefield</a> that takes the above values. The "@" makes cURL upload the actual file.</p>
|
||||
|
||||
<p>Now to upload all selected images in iPhoto to the Drupal site I merge the snippets above with the AppleScript from iPhotoToDrupal:</p>
|
||||
|
||||
<p><em><strong>Update:</strong> I had an issue with special characters as I entered "'" in iPhoto's description field. I found out about <span class="geshifilter"><code class="applescript geshifilter-applescript"><span class="kw1">quoted form</span> <span class="kw3">of</span> variablename</code></span> which is used to escape strings in AppleScript to use them in shell scripts. This funtion puts the string in single quotes automatically so I couldn't use it like <span class="geshifilter"><code class="applescript geshifilter-applescript"><span class="st0">" -F 'body="</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> this_comment <span class="sy0">&</span> <span class="st0">"'"</span></code></span>. Fortunately it's also possible to quote the value only like <span class="geshifilter"><code class="text geshifilter-text">-F body='xxx'</code></span> so <span class="geshifilter"><code class="applescript geshifilter-applescript"><span class="st0">" -F body="</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> this_comment</code></span> works. Just being at it I replaced it for other variables also. Finally, I added a "Done" dialog.</em></p>
|
||||
|
||||
<div class="geshifilter"><div class="applescript geshifilter-applescript"><span class="kw3">set</span> DrupalUsername <span class="kw3">to</span> <span class="st0">"user"</span><br />
|
||||
<span class="kw3">set</span> DrupalPassword <span class="kw3">to</span> <span class="st0">"pass"</span><br />
|
||||
<span class="kw3">set</span> DrupalSite <span class="kw3">to</span> <span class="st0">"http://localhost/drupal/"</span><br />
|
||||
<span class="kw3">set</span> DrupalContentType <span class="kw3">to</span> <span class="st0">"image"</span><br />
|
||||
<span class="kw3">set</span> DrupalAddPage <span class="kw3">to</span> <span class="st0">"?q=node/add/"</span> <span class="sy0">&</span> DrupalContentType<br />
|
||||
<span class="kw3">set</span> CookieFile <span class="kw3">to</span> <span class="st0">"/tmp/curl-cookies.txt"</span><br />
|
||||
<br />
|
||||
<br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> <span class="st0">"curl"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" "</span> <span class="sy0">&</span> DrupalSite <span class="sy0">&</span> <span class="st0">"?q=user"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -s"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -c "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -b "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -F 'name="</span> <span class="sy0">&</span> DrupalUsername <span class="sy0">&</span> <span class="st0">"'"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -F 'pass="</span> <span class="sy0">&</span> DrupalPassword <span class="sy0">&</span> <span class="st0">"'"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -F 'op=Log in'"</span><br />
|
||||
<span class="kw3">set</span> curlLogin <span class="kw3">to</span> curlLogin <span class="sy0">&</span> <span class="st0">" -F 'form_id=user_login'"</span><br />
|
||||
<span class="kw1">do shell script</span> curlLogin<br />
|
||||
<br />
|
||||
<span class="kw3">set</span> curlAddForm <span class="kw3">to</span> <span class="st0">"curl"</span><br />
|
||||
<span class="kw3">set</span> curlAddForm <span class="kw3">to</span> curlAddForm <span class="sy0">&</span> <span class="st0">" "</span> <span class="sy0">&</span> DrupalSite <span class="sy0">&</span> DrupalAddPage<br />
|
||||
<span class="kw3">set</span> curlAddForm <span class="kw3">to</span> curlAddForm <span class="sy0">&</span> <span class="st0">" -s"</span><br />
|
||||
<span class="kw3">set</span> curlAddForm <span class="kw3">to</span> curlAddForm <span class="sy0">&</span> <span class="st0">" -c "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> curlAddForm <span class="kw3">to</span> curlAddForm <span class="sy0">&</span> <span class="st0">" -b "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> tokenSrc <span class="kw3">to</span> <span class="kw1">do shell script</span> curlAddForm<br />
|
||||
<br />
|
||||
<span class="kw3">set</span> token <span class="kw3">to</span> <span class="kw1">do shell script</span> <span class="st0">"echo '"</span> <span class="sy0">&</span> tokenSrc <span class="sy0">&</span> <span class="st0">"' | perl -pe 's/.*edit-"</span> <span class="sy0">&</span> DrupalContentType <span class="sy0">&</span> <span class="st0">"-node-form-form-token<span class="es0">\"</span> *value=<span class="es0">\"</span>([^<span class="es0">\"</span>]*)<span class="es0">\"</span>.*/$1/s';"</span><br />
|
||||
<br />
|
||||
<br />
|
||||
<span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">"iPhoto"</span><br />
|
||||
<span class="kw1">activate</span><br />
|
||||
<br />
|
||||
<span class="kw3">try</span><br />
|
||||
<span class="kw3">copy</span> <span class="br0">(</span><span class="kw3">my</span> selected_images<span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="kw3">to</span> these_images<br />
|
||||
<br />
|
||||
<span class="co1">-- Make sure we have one or more image selected, and if we do, then grab the details of each and upload</span><br />
|
||||
<span class="kw3">if</span> these_images <span class="kw3">is</span> <span class="kw1">false</span> <span class="kw2">or</span> <span class="br0">(</span><span class="kw2">the</span> <span class="kw1">count</span> <span class="kw3">of</span> these_images<span class="br0">)</span> <span class="kw3">is</span> <span class="nu0">0</span> <span class="kw3">then</span><br />
|
||||
<span class="kw3">error</span> <span class="st0">"Please select one or more images."</span><br />
|
||||
<span class="kw3">end</span> <span class="kw3">if</span><br />
|
||||
<br />
|
||||
<span class="kw3">repeat</span> <span class="kw3">with</span> this_image <span class="kw3">in</span> these_images<br />
|
||||
<br />
|
||||
<span class="kw3">set</span> this_imagefile <span class="kw3">to</span> <span class="br0">(</span><span class="br0">(</span>image path <span class="kw3">of</span> this_image<span class="br0">)</span> <span class="kw2">as</span> <span class="kw1">POSIX file</span><span class="br0">)</span><br />
|
||||
<span class="kw3">set</span> this_uploadfile <span class="kw3">to</span> <span class="br0">(</span><span class="kw1">POSIX path</span> <span class="kw3">of</span> this_imagefile<span class="br0">)</span><br />
|
||||
<span class="kw3">set</span> this_comment <span class="kw3">to</span> <span class="br0">(</span><span class="kw2">the</span> comment <span class="kw3">of</span> this_image<span class="br0">)</span> <span class="kw2">as</span> <span class="kw1">string</span><br />
|
||||
<span class="kw3">set</span> this_name <span class="kw3">to</span> <span class="kw2">the</span> title <span class="kw3">of</span> this_image<br />
|
||||
<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> <span class="st0">"curl"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" "</span> <span class="sy0">&</span> DrupalSite <span class="sy0">&</span> DrupalAddPage<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -s"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -c "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -b "</span> <span class="sy0">&</span> CookieFile<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F title="</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> this_name<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F field_image[0][fid]=0"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F field_image[0][list]=1"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F files[field_image_0]=@"</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> this_uploadfile<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F body="</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> this_comment<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F name="</span> <span class="sy0">&</span> <span class="kw1">quoted form</span> <span class="kw3">of</span> DrupalUsername<br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F status=1"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F revision=1"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F op="</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F form_id="</span> <span class="sy0">&</span> DrupalContentType <span class="sy0">&</span> <span class="st0">"_node_form"</span><br />
|
||||
<span class="kw3">set</span> curlCreate <span class="kw3">to</span> curlCreate <span class="sy0">&</span> <span class="st0">" -F form_token="</span> <span class="sy0">&</span> token<br />
|
||||
<span class="kw1">do shell script</span> curlCreate<br />
|
||||
<br />
|
||||
<span class="kw3">end</span> <span class="kw3">repeat</span><br />
|
||||
<br />
|
||||
<span class="kw3">on</span> <span class="kw3">error</span> error_message <span class="kw1">number</span> error_number<br />
|
||||
<span class="kw3">if</span> <span class="kw2">the</span> error_number <span class="kw3">is</span> <span class="kw2">not</span> <span class="sy0">-</span><span class="nu0">128</span> <span class="kw3">then</span><br />
|
||||
<span class="kw1">display dialog</span> error_message <span class="kw1">buttons</span> <span class="br0">{</span><span class="st0">"Cancel"</span><span class="br0">}</span> default button <span class="nu0">1</span><br />
|
||||
<span class="kw3">end</span> <span class="kw3">if</span><br />
|
||||
<span class="kw3">end</span> <span class="kw3">try</span><br />
|
||||
<br />
|
||||
<span class="kw3">end</span> <span class="kw3">tell</span><br />
|
||||
<br />
|
||||
<span class="kw1">display dialog</span> <span class="st0">"Done."</span> <span class="kw1">buttons</span> <span class="br0">{</span><span class="st0">"Ok"</span><span class="br0">}</span> default button <span class="nu0">1</span><br />
|
||||
<br />
|
||||
<br />
|
||||
<span class="co1">-- Taken right out the "Show Image File" AppleScript on the Apple site:</span><br />
|
||||
<span class="co1">-- http://www.apple.com/applescript/iphoto/</span><br />
|
||||
<span class="kw3">on</span> selected_images<span class="br0">(</span><span class="br0">)</span><br />
|
||||
<span class="kw3">tell</span> <span class="kw1">application</span> <span class="st0">"iPhoto"</span><br />
|
||||
<span class="kw3">try</span><br />
|
||||
<span class="co1">-- get selection</span><br />
|
||||
<span class="kw3">set</span> these_items <span class="kw3">to</span> <span class="kw2">the</span> <span class="kw1">selection</span><br />
|
||||
<span class="co1">-- check for single album selected</span><br />
|
||||
<span class="kw3">if</span> <span class="kw2">the</span> class <span class="kw3">of</span> <span class="kw1">item</span> <span class="nu0">1</span> <span class="kw3">of</span> these_items <span class="kw3">is</span> album <span class="kw3">then</span> <span class="kw3">error</span><br />
|
||||
<span class="co1">-- return the list of selected photos</span><br />
|
||||
<span class="kw3">return</span> these_items<br />
|
||||
<span class="kw3">on</span> <span class="kw3">error</span><br />
|
||||
<span class="kw3">return</span> <span class="kw1">false</span><br />
|
||||
<span class="kw3">end</span> <span class="kw3">try</span><br />
|
||||
<span class="kw3">end</span> <span class="kw3">tell</span><br />
|
||||
<span class="kw3">end</span> selected_images</div></div>
|
||||
|
||||
<p>Just go to iPhoto, select some images and start the script. The images including title and description will be uploaded as new nodes to your Drupal site.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-158"></a>
|
||||
<div class="comment comment-by-anonymous odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">30. June 2010 - 0:22 — <span class="username">Tony</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/158/#comment-158" class="permalink" rel="bookmark">Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angeze</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Hi-</p>
|
||||
|
||||
<p>Nice job. I've been trying to use your applescript but am getting an error, "the command exited with a non-zero status". My Drupal install has clean URLs on. Do I need to modify the strings in your script to fit, or will the "non-clean" URLs still work?</p>
|
||||
|
||||
<p>Here's the details on my parts:
|
||||
Drupal 6.17
|
||||
iPhoto 7.1.5 (aka iPhoto '08)</p>
|
||||
|
||||
<p>Thanks!</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
<a id="comment-200"></a>
|
||||
<div class="comment comment-by-anonymous even">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">29. March 2012 - 18:40 — <span class="username">Anonym</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/200/#comment-200" class="permalink" rel="bookmark">I needed to change reg regex....</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>In my Drupal 7.12 i needed to alter your regex line :</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">set token to do shell script "echo '" & tokenSrc & "' | perl -pe 's/.*edit-" & DrupalContentType & "-node-form-form-token\" *value=\"([^\"]*)\".*/$1/s';"</div></div>
|
||||
|
||||
<p>to:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">set token to do shell script "echo '" & tokenSrc & "' | grep form_token | perl -pe 's/.*name=\"form_token\" *value=\"([^\"]*)\".*/$1/s';"</div></div>
|
||||
|
||||
<p>Somehow the name attribute was "form_token" and not "edit-image-node-form-form-token" as your code suggested.</p>
|
||||
|
||||
<p>Now it works great. Thanks for sharing!</p>
|
||||
|
||||
<p>I also added on the fly image resizing. All credits here go to https://discussions.apple.com/thread/2174350?start=0&tstart=0 from where I borrowed the resize code.</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">set longest_side to 1024<br />
|
||||
<br />
|
||||
set DrupalUsername to "admin"<br />
|
||||
set DrupalPassword to "XXXXXX"<br />
|
||||
set DrupalSite to "http://localhost/~arminhelbach/drupal7/"<br />
|
||||
set DrupalContentType to "image"<br />
|
||||
set DrupalAddPage to "?q=node/add/" & DrupalContentType<br />
|
||||
set CookieFile to "/tmp/curl-cookies.txt"<br />
|
||||
set tmp_path to "/tmp"<br />
|
||||
<br />
|
||||
set curlLogin to "curl"<br />
|
||||
set curlLogin to curlLogin & " " & DrupalSite & "?q=user"<br />
|
||||
set curlLogin to curlLogin & " -s"<br />
|
||||
set curlLogin to curlLogin & " -c " & CookieFile<br />
|
||||
set curlLogin to curlLogin & " -b " & CookieFile<br />
|
||||
set curlLogin to curlLogin & " -F 'name=" & DrupalUsername & "'"<br />
|
||||
set curlLogin to curlLogin & " -F 'pass=" & DrupalPassword & "'"<br />
|
||||
set curlLogin to curlLogin & " -F 'op=Log in'"<br />
|
||||
set curlLogin to curlLogin & " -F 'form_id=user_login'"<br />
|
||||
do shell script curlLogin<br />
|
||||
<br />
|
||||
set curlAddForm to "curl"<br />
|
||||
set curlAddForm to curlAddForm & " " & DrupalSite & DrupalAddPage<br />
|
||||
set curlAddForm to curlAddForm & " -s"<br />
|
||||
set curlAddForm to curlAddForm & " -c " & CookieFile<br />
|
||||
set curlAddForm to curlAddForm & " -b " & CookieFile<br />
|
||||
set tokenSrc to do shell script curlAddForm<br />
|
||||
<br />
|
||||
set token to do shell script "echo '" & tokenSrc & "' | grep form_token | perl -pe 's/.*name=\"form_token\" *value=\"([^\"]*)\".*/$1/s';"<br />
|
||||
<br />
|
||||
tell application "iPhoto"<br />
|
||||
activate<br />
|
||||
<br />
|
||||
try<br />
|
||||
copy (my selected_images()) to these_images<br />
|
||||
<br />
|
||||
-- Make sure we have one or more image selected, and if we do, then grab the details of each and upload<br />
|
||||
if these_images is false or (the count of these_images) is 0 then<br />
|
||||
error "Please select one or more images."<br />
|
||||
end if<br />
|
||||
<br />
|
||||
repeat with this_image in these_images<br />
|
||||
<br />
|
||||
set this_imagefile to ((image path of this_image) as POSIX file)<br />
|
||||
<br />
|
||||
set this_comment to (the comment of this_image) as string<br />
|
||||
set this_name to the title of this_image<br />
|
||||
<br />
|
||||
tell application "Image Events" to set t to PNG<br />
|
||||
copy (my convert_image(this_imagefile as alias, tmp_path, longest_side)) to tmpimagefile<br />
|
||||
set this_uploadfile to (POSIX path of tmpimagefile)<br />
|
||||
<br />
|
||||
set curlCreate to "curl"<br />
|
||||
set curlCreate to curlCreate & " " & DrupalSite & DrupalAddPage<br />
|
||||
set curlCreate to curlCreate & " -s"<br />
|
||||
set curlCreate to curlCreate & " -c " & CookieFile<br />
|
||||
set curlCreate to curlCreate & " -b " & CookieFile<br />
|
||||
set curlCreate to curlCreate & " -F title=" & quoted form of this_name<br />
|
||||
set curlCreate to curlCreate & " -F field_image[und][0][fid]=0"<br />
|
||||
set curlCreate to curlCreate & " -F field_image[und][0][list]=1"<br />
|
||||
set curlCreate to curlCreate & " -F files[field_image_und_0]=@" & quoted form of this_uploadfile<br />
|
||||
set curlCreate to curlCreate & " -F body=" & quoted form of this_comment<br />
|
||||
set curlCreate to curlCreate & " -F name=" & quoted form of DrupalUsername<br />
|
||||
set curlCreate to curlCreate & " -F status=1"<br />
|
||||
set curlCreate to curlCreate & " -F revision=1"<br />
|
||||
set curlCreate to curlCreate & " -F op="<br />
|
||||
set curlCreate to curlCreate & " -F form_id=" & DrupalContentType & "_node_form"<br />
|
||||
set curlCreate to curlCreate & " -F form_token=" & token<br />
|
||||
do shell script curlCreate<br />
|
||||
<br />
|
||||
do shell script "rm '" & this_uploadfile & "'"<br />
|
||||
end repeat<br />
|
||||
<br />
|
||||
on error error_message number error_number<br />
|
||||
if the error_number is not -128 then<br />
|
||||
display dialog error_message buttons {"Cancel"} default button 1<br />
|
||||
end if<br />
|
||||
end try<br />
|
||||
<br />
|
||||
end tell<br />
|
||||
<br />
|
||||
display dialog "Done." buttons {"Ok"} default button 1<br />
|
||||
<br />
|
||||
<br />
|
||||
-- Taken right out the "Show Image File" AppleScript on the Apple site:<br />
|
||||
-- http://www.apple.com/applescript/iphoto/<br />
|
||||
on selected_images()<br />
|
||||
tell application "iPhoto"<br />
|
||||
try<br />
|
||||
-- get selection<br />
|
||||
set these_items to the selection<br />
|
||||
-- check for single album selected<br />
|
||||
if the class of item 1 of these_items is album then error<br />
|
||||
-- return the list of selected photos<br />
|
||||
return these_items<br />
|
||||
on error<br />
|
||||
return false<br />
|
||||
end try<br />
|
||||
end tell<br />
|
||||
end selected_images<br />
|
||||
<br />
|
||||
<br />
|
||||
on convert_image(this_item, target_path, longest_side)<br />
|
||||
tell application "Image Events"<br />
|
||||
try<br />
|
||||
launch<br />
|
||||
-- open the image file<br />
|
||||
set this_image to open this_item<br />
|
||||
tell application "Finder"<br />
|
||||
set new_item to ((target_path) as string) & (name of this_item) & ".jpg"<br />
|
||||
end tell<br />
|
||||
copy dimensions of this_image to {current_width, current_height}<br />
|
||||
if current_width is greater than current_height then<br />
|
||||
set new_height to (longest_side * current_height) / current_width<br />
|
||||
if (new_height * longest_side) < (current_width * current_height) then<br />
|
||||
scale this_image to size longest_side<br />
|
||||
end if<br />
|
||||
else<br />
|
||||
if (new_height * longest_side) < (current_width * current_height) then<br />
|
||||
set new_height to (longest_side * current_width) / current_height<br />
|
||||
scale this_image to size new_height<br />
|
||||
end if<br />
|
||||
end if<br />
|
||||
save this_image in new_item as JPEG<br />
|
||||
return new_item<br />
|
||||
on error msg<br />
|
||||
return msg<br />
|
||||
end try<br />
|
||||
end tell<br />
|
||||
end convert_image</div></div>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/196 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:16 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/199 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:12 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Enabling Gallery2‘s language support by configuring locales in Ubuntu 7.10 (Gutsy) | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"xxBq5lAvtQMtINLJSG5wR_yASi3ySTu-QJ8XLTP0PSg","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-199 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Enabling Gallery2‘s language support by configuring locales in Ubuntu 7.10 (Gutsy)</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-199" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">9. May 2009 - 12:14 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Gallery2 didn‘t want to talk German to me :(</p>
|
||||
|
||||
<p>I found a hint in the <a href="http://codex.gallery2.org/Gallery2:FAQ#I_changed_the_language_but_nothing_happens.2C_what.27s_wrong.3F">Gallery2 FAQs</a> which pointed me to <em>locales</em> that are used by gettext. On my server (Ubuntu 7.10) no locales were configured so with a little help from <a href="http://www.ubuntugeek.com/how-to-select-and-generate-locales-on-ubuntu.html">ubuntugeek.com</a> I enabled <code>de_DE.UTF-8</code> and <code>en_US.UTF-8</code> (adding both as new lines to <code>/var/lib/locales/supported.d/local</code>), then <code>dpkg-reconfigure locales</code> and restart Apache.</p>
|
||||
|
||||
<p>Works.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/199 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:12 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,197 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/201 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Plone 3: How to really exclude from navigation | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"pXbi0wp3tE_GO9paH9IVP9xkIuJNZx_eZ5XDXZd6-aw","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-201 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Plone 3: How to really exclude from navigation</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-201" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">21. August 2009 - 0:49 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Plone has multiple ways of excluding a content object from the navigation:</p>
|
||||
|
||||
<ul>
|
||||
<li>In the edit tab of the object under settings check "Exclude from navigation"</li>
|
||||
<li>Add the ID to <span class="geshifilter"><code class="text geshifilter-text">idsNotToList</code></span> in <span class="geshifilter"><code class="text geshifilter-text">portal_properties/navtree_properties</code></span></li>
|
||||
<li>Add the meta type to <span class="geshifilter"><code class="text geshifilter-text">metaTypesNotToList</code></span> in <span class="geshifilter"><code class="text geshifilter-text">portal_properties/navtree_properties</code></span></li>
|
||||
</ul>
|
||||
|
||||
<p>This works fine but the item is still displayed in the navigation tree if it's the current item (the one you're currently viewing). This may have a reason (usability?) but it is not what I want in some cases. If you put a link to the terms and conditions in the footer, for example, you don't want this to show up in the navigation tree when you click on it.</p>
|
||||
|
||||
<p>To solve this you can override the template for the navigation portlet (it may also work for the portal tabs) and add the conditions for the exclusion there.</p>
|
||||
|
||||
<h2>Overriding the navigation portlet template</h2>
|
||||
|
||||
<p>Copy the files <span class="geshifilter"><code class="text geshifilter-text">navigation.pt</code></span> and <span class="geshifilter"><code class="text geshifilter-text">navigation_recurse.pt</code></span> to your package. Then create a file <span class="geshifilter"><code class="text geshifilter-text">navigation.py</code></span> with the following content to create your own renderer based the original overriding the templates:</p>
|
||||
|
||||
<div class="geshifilter"><div class="python geshifilter-python"><span class="kw1">from</span> plone.<span class="me1">app</span>.<span class="me1">portlets</span>.<span class="me1">portlets</span>.<span class="me1">navigation</span> <span class="kw1">import</span> Renderer<br />
|
||||
<span class="kw1">from</span> Products.<span class="me1">Five</span>.<span class="me1">browser</span>.<span class="me1">pagetemplatefile</span> <span class="kw1">import</span> ViewPageTemplateFile<br />
|
||||
<br />
|
||||
<span class="kw1">class</span> MyRenderer<span class="br0">(</span>Renderer<span class="br0">)</span>:<br />
|
||||
_template <span class="sy0">=</span> ViewPageTemplateFile<span class="br0">(</span><span class="st0">'navigation.pt'</span><span class="br0">)</span><br />
|
||||
recurse <span class="sy0">=</span> ViewPageTemplateFile<span class="br0">(</span><span class="st0">'navigation_recurse.pt'</span><span class="br0">)</span></div></div>
|
||||
|
||||
<p>Next, you have to register the class in the <span class="geshifilter"><code class="text geshifilter-text">configure.zcml</code></span> to override the original renderer.</p>
|
||||
|
||||
<div class="geshifilter"><div class="xml geshifilter-xml"><span class="sc3"><span class="re1"><configure</span></span><br />
|
||||
<span class="sc3"> <span class="re0">xmlns:plone</span>=<span class="st0">"http://namespaces.plone.org/plone"</span><span class="re2">></span></span><br />
|
||||
<br />
|
||||
<span class="sc3"><span class="re1"><include</span> <span class="re0">package</span>=<span class="st0">"plone.app.portlets"</span> <span class="re2">/></span></span><br />
|
||||
<br />
|
||||
<span class="sc3"><span class="re1"><plone:portletRenderer</span></span><br />
|
||||
<span class="sc3"> <span class="re0">portlet</span>=<span class="st0">"plone.app.portlets.portlets.navigation.INavigationPortlet"</span></span><br />
|
||||
<span class="sc3"> <span class="re0">class</span>=<span class="st0">".navigation.MyRenderer"</span></span><br />
|
||||
<span class="sc3"> <span class="re2">/></span></span><br />
|
||||
<br />
|
||||
<span class="sc3"><span class="re1"></configure<span class="re2">></span></span></span></div></div>
|
||||
|
||||
<p>(Note: If you want to do this for one theme only, put the code into your theme package and add <span class="geshifilter"><code class="text geshifilter-text">layer="..browser.interfaces.IThemeSpecific"</code></span> to the <span class="geshifilter"><code class="text geshifilter-text"><plone:portletRenderer></code></span> element.)</p>
|
||||
|
||||
<p>If you restart Zope now, you are using your own class and templates but there's no difference, yet.</p>
|
||||
|
||||
<h2>Adding conditions to really exclude from navigation</h2>
|
||||
|
||||
<p>First we expose the <span class="geshifilter"><code class="text geshifilter-text">idsNotToList</code></span> and <span class="geshifilter"><code class="text geshifilter-text">metaTypesNotToList</code></span> properties to the templates by adding the following to <span class="geshifilter"><code class="text geshifilter-text">navigation.py</code></span>:</p>
|
||||
|
||||
<div class="geshifilter"><div class="python geshifilter-python">...<br />
|
||||
<span class="kw1">from</span> plone.<span class="me1">memoize</span>.<span class="me1">instance</span> <span class="kw1">import</span> memoize<br />
|
||||
<span class="kw1">from</span> Products.<span class="me1">CMFCore</span>.<span class="me1">utils</span> <span class="kw1">import</span> getToolByName<br />
|
||||
<br />
|
||||
<span class="kw1">class</span> MyRenderer<span class="br0">(</span>Renderer<span class="br0">)</span>:<br />
|
||||
...<br />
|
||||
<span class="sy0">@</span>memoize<br />
|
||||
<span class="kw1">def</span> getMetaTypesNotToList<span class="br0">(</span><span class="kw2">self</span><span class="br0">)</span>:<br />
|
||||
context <span class="sy0">=</span> <span class="kw2">self</span>.<span class="me1">context</span><br />
|
||||
portal_properties <span class="sy0">=</span> getToolByName<span class="br0">(</span>context<span class="sy0">,</span> <span class="st0">'portal_properties'</span><span class="br0">)</span><br />
|
||||
navtree_properties <span class="sy0">=</span> <span class="kw2">getattr</span><span class="br0">(</span>portal_properties<span class="sy0">,</span> <span class="st0">'navtree_properties'</span><span class="br0">)</span><br />
|
||||
<span class="kw1">return</span> <span class="kw2">list</span><span class="br0">(</span>navtree_properties.<span class="me1">metaTypesNotToList</span><span class="br0">)</span><br />
|
||||
<br />
|
||||
<span class="sy0">@</span>memoize<br />
|
||||
<span class="kw1">def</span> getIdsNotToList<span class="br0">(</span><span class="kw2">self</span><span class="br0">)</span>:<br />
|
||||
context <span class="sy0">=</span> <span class="kw2">self</span>.<span class="me1">context</span><br />
|
||||
portal_properties <span class="sy0">=</span> getToolByName<span class="br0">(</span>context<span class="sy0">,</span> <span class="st0">'portal_properties'</span><span class="br0">)</span><br />
|
||||
navtree_properties <span class="sy0">=</span> <span class="kw2">getattr</span><span class="br0">(</span>portal_properties<span class="sy0">,</span> <span class="st0">'navtree_properties'</span><span class="br0">)</span><br />
|
||||
<span class="kw1">return</span> <span class="kw2">list</span><span class="br0">(</span>navtree_properties.<span class="me1">idsNotToList</span><span class="br0">)</span></div></div>
|
||||
|
||||
<p>Now we can finally add the conditions to the template so the item is not displayed in the navigation portlet any more. In <span class="geshifilter"><code class="text geshifilter-text">navigation_recurse.pt</code></span> change</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">tal:condition="python:bottomLevel &lt;= 0 or level &lt;= bottomLevel"</div></div>
|
||||
|
||||
<p>to</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">tal:condition="python:(not node['item'].id in view.getIdsNotToList()) and (node['portal_type'] not in view.getMetaTypesNotToList()) and (not node['item'].exclude_from_nav) and (bottomLevel &lt;= 0 or level &lt;= bottomLevel)"</div></div>
|
||||
|
||||
<p>That's it!</p>
|
||||
|
||||
<p>References:</p>
|
||||
|
||||
<ul>
|
||||
<li>http://plone.org/documentation/how-to/override-the-portlets-in-plone-3.0/</li>
|
||||
<li>http://plone.org/support/region/de#nabble-td1643152%7Ca1643152</li>
|
||||
</ul>
|
||||
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Binary Data" title="application/octet-stream" src="../../modules/file/icons/application-octet-stream.png" /> <a href="../../sites/siarp.de/files/plonetutorial.excludefromnav-1.0dev-py2.4/" type="application/octet-stream; length=5979" title="plonetutorial.excludefromnav-1.0dev-py2.4.egg">plonetutorial.excludefromnav-1.0dev-py2.4.egg</a></span></td><td>5.84 KB</td> </tr>
|
||||
<tr class="even"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/png" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/Bild%2010.png" type="image/png; length=173790" title="Bild 10.png">Bild 10.png</a></span></td><td>169.72 KB</td> </tr>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/png" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/Bild%2011.png" type="image/png; length=173490" title="Bild 11.png">Bild 11.png</a></span></td><td>169.42 KB</td> </tr>
|
||||
<tr class="even"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/png" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/Bild%2013.png" type="image/png; length=150155" title="Bild 13.png">Bild 13.png</a></span></td><td>146.64 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/201 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:12 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/202 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>GPS mit dem E71: Initialzündung | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"SaROQRwNIXp3dos9CYVrhEW7gqbJOSC3jUS3L4lN-sk","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-202 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">GPS mit dem E71: Initialzündung</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-202" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">8. September 2009 - 20:24 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Seit zweieinhalb Monaten habe ich ein <a href="http://www.nokia.de/produkte/mobiltelefone/nokia-e71">Nokia E71</a> und bin eigentlich absolut zufrieden: Die Tastatur ist super (dafür gebe ich sogar gerne die Hälfte des Bildschirms im Vergleich zum iPhone her), E-Mail funktioniert wunderbar, Internet per WLAN für zu Hause, alles super. Nur das GPS... Ich hatte mich bewusst für ein Handy mit GPS entschieden, aber irgendwie wollte das Ding nicht recht. Bis zur Bestimmung der Position konnten gut 10 Minuten vergehen, absolut inakzeptabel. Auch Aktivierung von AGPS und Datenverbindung brachte nichts. An einen Hardware-Defekt konnte ich nicht recht glauben, schließlich ging es ja - irgendwann. Die <a href="http://discussions.nokia.co.uk/discussions/board/message?board.id=communicators&thread.id=27335">Suche im Netz</a> brachte mich auch nicht recht weiter. Nur, dass ich nicht völlig alleine mit meinem Problem bin, wusste ich danach. Die neueste Firmware war auch schon aufgespielt, irgendwie blieb also nur ein böser Serienfehler. Ich war also schon kurz davor, Nokia das Ding um die Ohren zu hauen, als ich bei einem Kollegen ebenfalls ein E71 entdeckte. Und bei dem dauerte das Locking nur ein paar Sekunden. Außerdem sah ich in Nokia Maps zum ersten mal das Netzsymbol an Stelle des Satelliten-Statussymbols in der rechten unteren Ecke (zeigt die Nutzung von AGPS an). Und siehe da: Nachdem wir die SIM-Karten getauscht hatten, ging es auch mit meinem Gerät. Nokia gut, simyo böse? Wie frustrierend - bloß weil ich mit einem Billiganbieter unterwegs bin, soll mein GPS nutzlos sein? Und dann das Wunder: Nachdem wir die Karten zurückgetauscht hatten, ging es auch bei mir. Mit Netzsymbol bei der ersten Suche und wenigen Sekunden bis zur Positionsbestimmung, auch in geschlossenen Räumen. Unglaublich. Ich habe zwar keine Erklärung für den Effekt, kann aber jedem E71-Besitzer mit ähnlichen Problemen empfehlen, es auch zu probieren. (Für Erklärung des Effekts wäre ich auch dankbar. Die geliehene Karte war übrigens von 1&1, also D2-Netz.) Gut möglich, dass es sich bei anderen Symbian-Handys ähnlich verhält. Ich bin auf jeden Fall ersmal zufrieden.</p>
|
||||
|
||||
<p>Link: <a href="http://blog.brockha.us/archives/394-GPS-optimieren-beim-Nokia-E71.html">Tipps zur GPS-Einstellungen beim E71</a></p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/202 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,172 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/204 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Ruby on Rails deployen | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"bolScAj8Xrk6vOX5SfDSBmSd49pMpF4Op25TcshKIfk","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-204 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Ruby on Rails deployen</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-204" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">27. September 2009 - 15:29 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Das Szenario: Es sollen neben statischen Webseiten und PHP-Anwendungen auch Ruby-on-Rails-Anwendungen auf dem Server laufen. Die klassische Variante ist für jede Rails-Anwendung einen oder mehrere (Load Balancing) <a href="http://mongrel.rubyforge.org/">Mongrel</a>-Server laufen zu lassen und die mittels <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html">Reverse Proxy</a> hinter den Apache zu schalten (Port 80, SSL, Sicherheit). Außerdem gibt es (relativ neu) das Apache-Modul <a href="http://www.modrails.com/">Phusion Passenger (a.k.a. mod_rails / mod_rack)</a>. Passenger empfiehlt Apache mit Worker statt mit Prefork zu nutzen <a href="http://wiki.brightbox.co.uk/docs:phusion-passenger#php_compatibility">[1]</a>, aber das PHP-Modul für den Apache (mod_php) läuft nur mit Prefork. Leider hat das Ubuntu-Paket für Passenger eine Abhängigkeit mir Worker, so dass es nicht eingesetzt werden kann <a href="http://ninajansen.dk/2009/02/14/do-not-use-apt-get-to-install-passenger-on-ubuntu/">[2]</a>. (PHP via CGI laufen zu lassen kommt erstmal nicht in Frage). Allerdings kann man Passenger auch <a href="http://wiki.vpslink.com/HOWTO:_Ubuntu_Intrepid_RubyOnRails_Passenger">mit RubyGems installieren</a> (auch mit Prefork).</p>
|
||||
|
||||
<p>Weil es mit <a href="http://getontracks.org/">Tracks</a> 1.7 Probleme gab und außerdem die Mongrel-Variante etwas sparsamer sein soll, haben wir dann die genommen. Es folgen trotzdem für beide Varianten Anleitungen.</p>
|
||||
|
||||
<p>Die Rails-Anwendung wird in <span class="geshifilter"><code class="text geshifilter-text">/var/www/rails</code></span> entpackt. Wir gehen davon aus, dass sich Rails selber Teil des Pakets ist.</p>
|
||||
|
||||
<h2>Mongrel</h2>
|
||||
|
||||
<p>Dateien dem Benutzer zuordnen:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">$ sudo chmod -R www-data. /var/www/rails/tracks/</div></div>
|
||||
|
||||
<p>Server starten:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">$ sudo mongrel_rails start -c /var/www/rails/tracks -d -p 3001 -e production --prefix /tracks --user www-data --group www-data</div></div>
|
||||
|
||||
<p>Server automatisch starten:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">$ sudo vim /etc/init.d/PROJEKTNAME<br />
|
||||
#!/bin/bash<br />
|
||||
mongrel_rails start -c /var/www/rails/tracks -d -p 3001 -e production --prefix /tracks --user www-data --group www-data<br />
|
||||
<br />
|
||||
$ sudo chmod +x /etc/init.d/PROJEKTNAME<br />
|
||||
$ update-rc.d PROJEKTNAME defaults</div></div>
|
||||
|
||||
<p>Mongrel regelmäßig neu starten wegen Ressourcen und so...</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">$ sudo crontab -u www-data -e<br />
|
||||
<br />
|
||||
# m h dom mon dow command<br />
|
||||
13 5 * * * mongrel_rails restart -c /var/www/rails/tracks</div></div>
|
||||
|
||||
<p>Das Ganze jetzt noch hinter den Apache. In der vhost-Konfiguration (Abhängigkeit <span class="geshifilter"><code class="text geshifilter-text">mod_proxy</code></span> und <span class="geshifilter"><code class="text geshifilter-text">mod_proxy_http</code></span>):</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text"><Proxy *><br />
|
||||
Order Deny,Allow<br />
|
||||
Allow from all<br />
|
||||
</Proxy><br />
|
||||
<br />
|
||||
ProxyPass /tracks http://127.0.0.1:3001/tracks</div></div>
|
||||
|
||||
<h2>Passenger</h2>
|
||||
|
||||
<p>aptitude install ruby build-essential apache2-mpm-prefork apache2-prefork-dev rake rubygems1.8 ruby1.8-dev libopenssl-ruby1.8 libmysql-ruby1.8</p>
|
||||
|
||||
<p>gem install passenger
|
||||
/var/lib/gems/1.8/bin/passenger-install-apache2-module</p>
|
||||
|
||||
<p>/etc/apache2/mods-available/passenger.load:
|
||||
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so</p>
|
||||
|
||||
<p>/etc/apache2/mods-available/passenger.conf:
|
||||
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.5
|
||||
PassengerRuby /usr/bin/ruby1.8</p>
|
||||
|
||||
<p>a2enmod passenger</p>
|
||||
|
||||
<p>http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri</p>
|
||||
|
||||
<p>cd DocumentRoot
|
||||
ln -s /var/www/myrailsapp/public myrailsapp</p>
|
||||
|
||||
<p>vhost conf:
|
||||
RailsBaseURI /myrailsapp</p>
|
||||
|
||||
<p>/etc/init.d/apache2 restart</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/204 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,181 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/211 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:32 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Funambol SyncML-Server | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"uvm4dKNrZ9rSH6SKrlq9xLqKLNODDxqOzehRrde3Uj0","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-211 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Funambol SyncML-Server</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-211" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">1. October 2009 - 9:50 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><a href="http://www.funambol.org/">Funambol</a> ist derzeit die komfortabelste Möglichkeit, Adressen und Termine aus Thunderbird und Lightning mit dem Handy zu synchronisieren.</p>
|
||||
|
||||
<h2>Funambol auf dem VPS installieren</h2>
|
||||
|
||||
<ol>
|
||||
<li>Download und Ausführen von funambol-8.0.0.bin (Installation nach /opt/Funambol) ohne am Ende den Server zu starten</li>
|
||||
<li>Anpassung von <span class="geshifilter"><code class="text geshifilter-text">FUNAMBOL_HOME</code></span> in <span class="geshifilter"><code class="text geshifilter-text">/bin/funambol</code></span>, <span class="geshifilter"><code class="text geshifilter-text">/bin/funambol-server</code></span> und <span class="geshifilter"><code class="text geshifilter-text">/bin/install</code></span><!--break--></li>
|
||||
<li>Auskommentieren der nicht benötigten Dienste in <span class="geshifilter"><code class="text geshifilter-text">/bin/funambol</code></span>: Hypersonic, CTP Server, Inbox Listener, Pim Listener (jeweils im Start- und Stop-Teil)</li>
|
||||
<li>Herabsetzen von <span class="geshifilter"><code class="text geshifilter-text">MEM_OPTS</code></span> von 512 auf 12 MB in <span class="geshifilter"><code class="text geshifilter-text">/bin/funambol-server</code></span>: <span class="geshifilter"><code class="text geshifilter-text">MEM_OPTS="-Xmx12M"</code></span></li>
|
||||
<li>Auf das (64-Bit-)JRE verweisen (s. <a href="https://wiki.ow2.org/sync4j/Wiki.jsp?page=HOWTOInstallTheBundledVersionOnA64bitMachine">Funambol-Wiki</a>):<br />
|
||||
Dafür in <span class="geshifilter"><code class="text geshifilter-text">/bin/funambol</code></span> und <span class="geshifilter"><code class="text geshifilter-text">/bin/install</code></span> <span class="geshifilter"><code class="text geshifilter-text">$JAVA_HOME</code></span> setzen: <span class="geshifilter"><code class="text geshifilter-text">export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.16/jre</code></span><br />
|
||||
Zusätzlich noch <span class="geshifilter"><code class="text geshifilter-text">/opt/Funambol/tools/jre-1.5.0/lib</code></span> nach <span class="geshifilter"><code class="text geshifilter-text">/usr/lib/jvm/java-6-sun-1.6.0.16</code></span> kopieren (für die DB-Initialisierung)</li>
|
||||
<li>Den <a href="http://dev.mysql.com/downloads/#connector-j">MySQL-Java-Connector</a> herunterladen und nach <span class="geshifilter"><code class="text geshifilter-text">/tools/jre-1.5.0/jre/lib/ext</code></span> entpacken</li>
|
||||
<li>Umstellen von der mitgelieferten Hypersonic-DB auf MySQL (nach dem <a href="http://download.forge.objectweb.org/sync4j/funambol-installation-and-administration-guide.pdf">Admin-Handbuch</a>): In <span class="geshifilter"><code class="text geshifilter-text">/ds-server/install.properties</code></span> auf MySQL umstellen, die Standard-Einstellungen auskommentieren, den MySQL-Teil aktivieren und anpassen:<br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">MySQL</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">=====</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">jdbc.classpath=/opt/Funambol/tools/jre-1.5.0/jre/lib/ext/mysql-connector-java-5.1.10-bin.jar</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">jdbc.driver=com.mysql.jdbc.Driver</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">jdbc.url=jdbc:mysql://localhost/funambol?characterEncoding=UTF-8</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">jdbc.user=www</code></span><br />
|
||||
<span class="geshifilter"><code class="text geshifilter-text">jdbc.password=XXXXX</code></span></li>
|
||||
<li>Datenbank <span class="geshifilter"><code class="text geshifilter-text">funambol</code></span> anlegen und Benutzer <span class="geshifilter"><code class="text geshifilter-text">www</code></span> alle Rechte einräumen</li>
|
||||
<li>Datenbank mit Installations-Skript initialisieren: <span class="geshifilter"><code class="text geshifilter-text">sudo /opt/Funambol/bin/install</code></span></li>
|
||||
<li>Funambol starten: <span class="geshifilter"><code class="text geshifilter-text">sudo /opt/Funambol/bin/funambol start</code></span></li>
|
||||
<li>Bonus: Standard-Port 8080 umändern in der Catalina-Konfiguration (/tools/tomcat/conf/server.xml)</li>
|
||||
</ol>
|
||||
|
||||
<h2>Einrichtung</h2>
|
||||
|
||||
<ol>
|
||||
<li>Mit dem <a href="http://forge.ow2.org/project/showfiles.php?group_id=96">Funambol Administration Tool</a> zum Server verbinden</li>
|
||||
<li>Admin-Passwort ändern</li>
|
||||
<li>guest-Account löschen</li>
|
||||
<li>neue Accounts anlegen</li>
|
||||
</ol>
|
||||
|
||||
<h2>Handy synchronisieren</h2>
|
||||
|
||||
<p>(Mit meinem Nokia E71)
|
||||
Synchronisations-Profil anlegen:</p>
|
||||
|
||||
<ol>
|
||||
<li>Programme 'Kontakte' und 'Kalender' aktivieren. 'Kontakte' synchronisiert mit externer Datenbank "card", 'Kalender' mit "cal"</li>
|
||||
<li>Verbindungseinstellungen definieren</li>
|
||||
<li>Synchronisieren</li>
|
||||
</ol>
|
||||
|
||||
<h2>Thunderbird und Lightning synchronisieren</h2>
|
||||
|
||||
<ol>
|
||||
<li>Das <a href="https://mozilla-plugin.forge.funambol.org/">Synchronisations-Plugin</a> installieren</li>
|
||||
<li>Optionen einstellen:</li>
|
||||
</ol>
|
||||
|
||||
<p>- Server Location: http://siarp.de:5072/funambol/ds bzw. http://dienste.siarp.de/funambol/ds mit Umleitung
|
||||
- Kontakte synchronisieren mit "card"
|
||||
- Kalender synchronisiert mit "cal"</p>
|
||||
|
||||
<h2>ToDo</h2>
|
||||
|
||||
<p>https einrichten: https://wiki.ow2.org/sync4j/Wiki.jsp?page=HowtouseHttps</p>
|
||||
|
||||
<h2>Quellen</h2>
|
||||
|
||||
<ul>
|
||||
<li>http://bjoern.taunus-server.de/cms.php?option=com_content&task=view&id=314&Itemid=65</li>
|
||||
<li>http://download.forge.objectweb.org/sync4j/funambol-installation-and-administration-guide.pdf</li>
|
||||
</ul>
|
||||
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Package icon" title="application/zip" src="../../modules/file/icons/package-x-generic.png" /> <a href="../../sites/siarp.de/files/bin.zip" type="application/zip; length=4347" title="bin.zip">bin.zip</a></span></td><td>4.25 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/211 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:36 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/214 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:26 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Neue E-Mail-Organisation - Inbox Zero | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"l6Vg9-n3CQkxlH8t7NHbFHk3I7j_q4BNEoyy6boFtj8","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-214 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Neue E-Mail-Organisation - Inbox Zero</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-214" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">11. October 2009 - 20:32 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Nachdem Hosteurope nun schon seit einiger Zeit regelmäßig anmahnt, dass die Speicherplatz für E-Mails langsam zu Ende geht, woraufhin ich regelmäßig ein paar dicke Mails lösche um die Galgenfrist zu verlängern, habe ich nun endlich die Organisationsstruktur meines Posteingangs grundlegend erneuert. Bisher hatte ich zwar schon nach Jahren archiviert, die einzelnen E-Mails aber in ein recht komplexes System an Unterordnern einsortiert. (Einer für jeden Mailaccount, Unterordner für verschiedene Korrespondenzpartner und Themen, usw. usf.) Insgesamt war das alte System viel zu wartungsintensiv und unflexibel. Nachdem ich im Büro mehr aus einer Laune heraus gleich vom ersten Arbeitstag an den Posteingang täglich komplett abgearbeitet hatte, wollte ich das System für meine privaten Mails jetzt übernehmen und perfektionieren.</p>
|
||||
|
||||
<p>Grundsätzlich lehnt die Systematik an <a href="http://en.wikipedia.org/wiki/Merlin_Mann">Merlin Manns</a> <a href="http://inboxzero.com/">Inbox Zero</a> an. Das Basisprinzip ist, sämtliche E-Mails möglichst schnell zu kategorisieren und abzuarbeiten. Eine gute Zusammenfassung (wesentlich mehr habe ich dazu gar nicht gelesen) gibt es <a href="http://imgriff.com/2008/04/07/inbox-zero-wie-man-den-posteingang-auf-null-bringt/">bei imgriff.com</a>.</p>
|
||||
|
||||
<p>Mein System funktioniert jetzt so:</p>
|
||||
|
||||
<p><img src="../../sites/siarp.de/files/Inbox_Zero.jpg" alt="E-Mail-Systematik" title="E-Mail-Systematik" /></p>
|
||||
|
||||
<ol>
|
||||
<li>Die E-Mails von sämtlichen Accounts landen in der Inbox - keine automatische Vorsortierung in irgendwelche Unterordner. Wenn man eine E-Mail lesen will, fasst man sie ohnehin an. Und wenn man sie nicht lesen will, dann sollte man dafür sorgen, dass man sie gar nicht erst bekommt. Auf jeden Fall trainiert es vom ewigen "das lese ich dann später" wegzukommen.</li>
|
||||
<li>Die Inbox wird manuell sortiert. E-Mails werden entweder sofort gelöscht, archiviert oder kommen in den Ordner 'Erledigen', falls sie sich tatsächlich nicht sofort abarbeiten lassen.<br />
|
||||
Das Archiv ist unterteilt in E-Mails, die an mich persönlich geschrieben wurden und alles andere (Rechnungen, archivierungswürdige Newsletter, etc.)</li>
|
||||
<li>Zum Jahresbeginn wird der gesamte Bestand gesichert und im IMAP in einen Archiv-Ordner verschoben. Der Ordner vom vorletzten Jahr wird aus dem Account gelöscht, so dass immer die E-Mails des gesamten letzten plus die des laufenden Jahres online verfügbar sind. Alles andere wird per Hosteurope-Backup-Funktion im MBOX-Format wegarchiviert und kann lokal eingesehen werden.</li>
|
||||
</ol>
|
||||
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/jpeg" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/Inbox_Zero.jpg" type="image/jpeg; length=15538" title="Inbox_Zero.jpg">Inbox_Zero.jpg</a></span></td><td>15.17 KB</td> </tr>
|
||||
<tr class="even"><td><span class="file"><img class="file-icon" alt="File" title="image/svg+xml" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/Inbox_Zero.svg" type="image/svg+xml; length=15864" title="Inbox_Zero.svg">Inbox_Zero.svg</a></span></td><td>15.49 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/214 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:32 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,159 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/218 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Bazaar: incompatible format 2a and rich-root support | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"ix6BX2mop4xQCa6PmreNU2umNDKsfCszBAeWfx9vf_8","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-218 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Bazaar: incompatible format 2a and rich-root support</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-218" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">26. October 2009 - 10:38 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>I'm running Bazaar 2.0 on my local machine and the remote repository runs on Ubuntu Jaunty which provides Bazaar 1.13. After working locally for some time I wanted to push my branch to a newly created shared repository on the server but I got the error message</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">bzr: ERROR: RemoteRepository(bzr+ssh://SERVER/path/to/repo/.bzr/) <br />
|
||||
is not compatible with<br />
|
||||
CHKInventoryRepository('file:///path/to/repo/.bzr/repository/')<br />
|
||||
different rich-root support</div></div>
|
||||
|
||||
<p>Reading http://www.nabble.com/bazaar-error-on-repository-td25868297.html it seems different Bazaar versions make different repository formats which are incompatible. But</p>
|
||||
|
||||
<blockquote>
|
||||
<p>[...] you could move the server to a rich root capable format; then
|
||||
it would work (though crossing the format boundary can be slow).
|
||||
1.3.1 is new enough to support rich-root-pack.</p>
|
||||
</blockquote>
|
||||
|
||||
<p>So on the server I did</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">bzr upgrade --rich-root-pack repo/</div></div>
|
||||
|
||||
<p>and now it works. I can push my local branch to the remote repository.</p>
|
||||
|
||||
<p><strong>But only once!</strong></p>
|
||||
|
||||
<p>Second time I wanted to push I got another error:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">bzr: ERROR: bzrlib.errors.ErrorFromSmartServer: Error received from smart server: ('error', "'Bazaar repository format 2a (needs bzr 1.16 or later)\\n'")</div></div>
|
||||
|
||||
<p>Looks like the format 2a, which is the default for Bazaar >= 2.0 is incompatible with the one on my server. Downgrading to an older format of my local tree did the trick:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">bzr upgrade --format=1.14-rich-root</div></div>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-153"></a>
|
||||
<div class="comment comment-by-anonymous odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">26. December 2009 - 20:54 — <span class="username">Anonym</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/153/#comment-153" class="permalink" rel="bookmark">Thanks, helped a lot :)</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Thanks, helped a lot :)</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/218 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:26 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/220 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>YAML, jQuery slideToggle and IE6 | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"isP2btEZt_tsDFB92mMNgxaX80to8wVhujWvFwjEeR0","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-220 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">YAML, jQuery slideToggle and IE6</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-220" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">6. November 2009 - 14:46 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>As usual with browser bugs and hacks this took me a while to find out.</p>
|
||||
|
||||
<p>I have an unordered list with complex items like floats and stuff. This list is supposed to hide when I click on a button by slowly decreasing its height. I use <a href="http://docs.jquery.com/Effects/slideToggle">jQuery's slideToggle</a> for that.</p>
|
||||
|
||||
<p><strong>Problem:</strong> In Internet Explorer 6 the content (or parts of it) is hidden after the list is shown (slid down).</p>
|
||||
|
||||
<p>The only thing I found was a <a href="http://www.ndoherty.biz/2007/09/jquery-slidetoggle-and-internet-explorer/">blog post</a> saying you shouldn't use any positioning there. I didn't. Well, I thought I didn't…</p>
|
||||
|
||||
<p>For this project I use <a href="http://www.yaml.de/en/">YAML</a>, a CSS framework and YAML sets all lists to <span class="geshifilter"><code class="text geshifilter-text">position: relative</code></span> for IE6 (iehacks.css):</p>
|
||||
|
||||
<div class="geshifilter"><div class="css geshifilter-css"> <span class="coMULTI">/**<br />
|
||||
* Disappearing List-Background Bug<br />
|
||||
* @see http://www.positioniseverything.net/explorer/ie-listbug.html<br />
|
||||
*<br />
|
||||
* @bugfix<br />
|
||||
* @affected IE 5.x/Win, IE6<br />
|
||||
* @css-for IE 5.x/Win, IE6<br />
|
||||
* @valid yes<br />
|
||||
*/</span><br />
|
||||
<br />
|
||||
<span class="sy0">*</span> html ul<span class="sy0">,</span> <span class="sy0">*</span> html ol<span class="sy0">,</span> <span class="sy0">*</span> html dl <span class="br0">{</span> <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span> <span class="br0">}</span></div></div>
|
||||
|
||||
<p>Overriding this for my sliding list solves the problem.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/220 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,126 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/221 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>YAML und Listen im IE6 | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"dxXwGdX2CtcjiY_ySRigUJtr8GeXCYxY1VgguDETDn4","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-221 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">YAML und Listen im IE6</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-221" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">11. November 2009 - 10:52 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Achtung! Böse Falle mit YAML und Listen im Internet Explorer 6! Folgender Code steht in der iehacks.css und gilt für den IE6.</p>
|
||||
|
||||
<div class="geshifilter"><div class="css geshifilter-css"><span class="coMULTI">/**<br />
|
||||
* Disappearing List-Background Bug<br />
|
||||
* @see http://www.positioniseverything.net/explorer/ie-listbug.html<br />
|
||||
*<br />
|
||||
* @bugfix<br />
|
||||
* @affected IE 5.x/Win, IE6<br />
|
||||
* @css-for IE 5.x/Win, IE6<br />
|
||||
* @valid yes<br />
|
||||
*/</span><br />
|
||||
<br />
|
||||
<span class="sy0">*</span> html ul<span class="sy0">,</span> <span class="sy0">*</span> html ol<span class="sy0">,</span> <span class="sy0">*</span> html dl <span class="br0">{</span> <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">relative</span><span class="sy0">;</span> <span class="br0">}</span></div></div>
|
||||
|
||||
<p>Ich hatte deswegen jetzt schon ein <a href="../220/">zweites Mal</a> Probleme. Diesmal ging es darum, dass Listenelemente sich nicht entsprechende dem overflow verhielten, wie andere Elemente. Wieder habe ich eine Weile nach dem Problem gesucht.</p>
|
||||
|
||||
<p>Der globale Ansatz des YAML-Fixes ist schon gewagt, finde ich. Man muss das immer im Hinterkopf behalten. Immer, wenn etwas nur im IE6 komisch ist mit der Darstellung von Listen, prüfen ob es daran liegt. Umgehen (quasi ein Fix-Fix) ist einfach Z.B.:</p>
|
||||
|
||||
<div class="geshifilter"><div class="css geshifilter-css"><span class="coMULTI">/* nur für IE6 anwenden: */</span><br />
|
||||
<span class="re0">#elem</span> ul <span class="br0">{</span> <span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">static</span><span class="sy0">;</span> <span class="br0">}</span></div></div>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/221 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,121 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/222 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>My SilverStripe Usability Test | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"-aR-YaSp1wSZckJJ9UbTdwYaxTIjOLPbdAyk8EBBbEk","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-222 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">My SilverStripe Usability Test</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-222" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">14. November 2009 - 11:44 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>So I decided to try out <a href="http://silverstripe.org/">SilveStripe</a> (Version 2.3.3) to check out if it's of any value for me as a freelance web developer. I'm kind of an expert in <a href="http://drupal.org/">Drupal</a>, I also work with <a href="http://plone.org/">Plone</a>, and lately I'm very interested in usability and I do track initiatives in the Drupal and Plone community to give users a better experience. I know that feedback of a first-time user is valuable so I thought I'd write down my impressions of SilverStripe right away.</p>
|
||||
|
||||
<h2>Installation</h2>
|
||||
|
||||
<p>On the SilverStripe homepage I found the big download button (actually I searched for "Downloads" or something in the main navigation first and it took me a second to find the blue thing on the right) and then got my stable version. I extracted it in the web root of my machine, renamed the folder to "SilverStripe" and then searched for installation instructions. In the silverstripe.org main navigation I clicked on "Help" and after skimming all of the options I clicked in "Documentation". There I found the <a href="http://doc.silverstripe.org/doku.php?id=installation">Installing</a> link under "Installation". There I got confused for a few seconds by the platform-dependent instructions but then I realized that this is about setting up the basic web stack, which I,of course, already have so down to "Existing Webservers" > <a href="http://doc.silverstripe.org/doku.php?id=installation-on-webserver">Apache</a>. Ok, the Installation Steps tell me that there's nothing to do but open a browser and enter the URL. Well, I know, you always have to set up a database first so <span class="geshifilter"><code class="text geshifilter-text">CREATE DATABASE silverstripe;</code></span> and then open the browser.</p>
|
||||
|
||||
<p>I had one usability issue with the layout of the installation screen. I was not sure about the "steps", where I was and what would be next. Major confusion was the placement of the button to proceed which is somewhere at the top but not at the very top of the form/page. I scrolled down to read and check everything and I expected a kind of "next" button at the bottom.</p>
|
||||
|
||||
<p>All in all, the install process was very easy, went smoothly and I could find all the information I needed. I seems as if the download button at the top right of the site is supposed to be very prominent but to me it was not. Of course this is not a big issue at all. As of the installation instructions there could be a shortcut, like: <em>If you already have your server set up, just extract SilverStripe to your web root, create a database and point your browser to the new SilverStripe URL. The automatic installer will guide you through the setup.</em> The layout of the installer is a major (but not critical) issue to me. There should be some overview of the steps and the button should be somewhere else with better wording.</p>
|
||||
|
||||
<p><strong>Notes:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>Don't pre-populate the admin password - it's insecure and users won't "remember" the password as they didn't enter it in the first place</li>
|
||||
</ul>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/222 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/223 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Plone: Item Type as Criterion for Collection but not to show up in Search | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"xb8i2UGRc9VA9dD1rtNdlhOzo3V3kkXyAkD4qZ8Q9Ik","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-223 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Plone: Item Type as Criterion for Collection but not to show up in Search</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-223" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">16. November 2009 - 15:13 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>You can't select an item type as a criterion for a collection if it is not selected to be included in search results. In the "Search settings" (<span class="geshifilter"><code class="text geshifilter-text">/@@search-controlpanel</code></span>) you can exclude certain content types from being "searched and be available in the user facing part of the site". That actually corresponds to the list of <span class="geshifilter"><code class="text geshifilter-text">types_not_searched</code></span> in <span class="geshifilter"><code class="text geshifilter-text">site_properties</code></span>. Now that list is excluded from available content types as a criterion for collections. At least for the UI–it still works.</p>
|
||||
|
||||
<p>If you want a content type to not show up in search results but in collections, you can work around that problem by enabling the type for search temporarily, set up your collection and disable the type for search afterwards. It's a bit odd, because you can't even see your selection in the criterion page afterwards but it works.</p>
|
||||
|
||||
<p>I'd say this is a bug and the collection UI should present all available types in the option box, if searchable or not. I guess I should file a report.</p>
|
||||
|
||||
<p><strong>Update:</strong> I submitted a <a href="https://dev.plone.org/plone/ticket/9802">bug report</a>.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/223 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,134 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/227 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:22 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Committeten auf deutsch | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"gNhMAlL3zkyM5K_51-wxr9MM2_bZJbW-0ePOI4XiPdo","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-227 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Committeten auf deutsch</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-227" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">6. May 2010 - 22:01 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Bei der Frage, mit wie vielen Ts man eigentlich „committeten“ („das steht im committeten Code“) schreibt, dachte ich mir, es wäre Zeit, sich mal mit vernünftigen und vertretbaren Übersetzungen in diesem Bereich zu beschäftigen. Das Ergebnis:</p>
|
||||
|
||||
<p>Ein „Commit“ ist ein „Beitrag“, etwas „committen“ etwas „beitragen“. Beim „Repository“ ist es noch unklar. Es lässt sich wohl mit „Repositorium“aber auch mit „Repository“ übersetzen. Schön wäre vielleicht auch „Magazin“. „Einen Beitrag zum Magazin leisten“...</p>
|
||||
|
||||
<p>Also, wisst ihr bescheid. Übersetzt eure Werkzeuge und pflegt die Sprachkultur!</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-157"></a>
|
||||
<div class="comment comment-by-anonymous odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">7. May 2010 - 17:55 — <a href="http://tobias-kraentzer.de/" rel="nofollow" class="username">Tobias</a></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/157/#comment-157" class="permalink" rel="bookmark">Übersetzung von „Repository“</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Für die Übersetzung von „Repository“ sollte man ähnlich lange bei einem Bier im Lebowski nachdenken. „Magazin“ gefällt mir nicht sonderlich gut.</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/227 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:24 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,239 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/228 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:15 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Strato HiDrive unter Ubuntu einbinden | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"uMVxGhGzRWTfkl_K-ddlcyNazn4ny3PfyoYp0ri_k-A","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-228 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Strato HiDrive unter Ubuntu einbinden</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-228" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">28. July 2010 - 11:09 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Mein neues <a href="http://hidrive.strato.com/">HiDrive</a> unter Ubuntu 10.04 einzubinden hat etwas Nerven gekostet. WebDAV geht sofort (z.B. <a href="http://tuxpool.blogspot.com/2009/07/webdav-bug-in-ubuntu-jaunty.html">so</a>), ist aber schweinelahm. SMB über OpenVPN ist fürchterlich einzurichten und mir ist nicht so ganz klar, wie man das VPN vom restlichen Verkehr entkoppelt - man will ja nur die Kommunikation mit dem HiDrive darüber laufen lassen.
|
||||
Die Lösung: SFTP per <a href="http://www.heise.de/ct/hotline/Dateisystem-per-SSH-320860.html">sshfs</a>. Fühlt sich fast an, als wäre es die lokale Festplatte.</p>
|
||||
|
||||
<p>Vorbereitung:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">sudo adduser username fuse # Benutzer "username" der Gruppe fuse hinzufügen (wird nach nächstem Login aktiv)<br />
|
||||
sudo mkdir /media/hidrive # Mountpoint anlegen<br />
|
||||
sudo chmod 777 /media/hidrive</div></div>
|
||||
|
||||
<p>mount funktioniert so:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">sshfs -o allow_other -o workaround=rename username@sftp.hidrive.strato.com: /media/hidrive</div></div>
|
||||
|
||||
<p>Nur mit workaround=rename kann ich Dateien auf dem HiDrive ersetzen und mit gedit bearbeiten (weil das normalerweise anscheinend eine temporäre Datei schreibt und die dann umbenennt).</p>
|
||||
|
||||
<p>unmount so:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">fusermount -u /media/hidrive</div></div>
|
||||
|
||||
<p>Wenn man beim Einloggen nicht immer das Passwort eingeben möchte, kann man auch einen ssh-Key verwenden, eine Anleitung dafür gibt es bei Strato unter www.strato-faq.de/artikel.html?id=2297</p>
|
||||
|
||||
<p>Das Login-Skript sieht dann so aus:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">#!/bin/sh<br />
|
||||
sshfs -o IdentityFile=/home/user/.ssh/id_rsa -o allow_other -o workaround=rename username@sftp.hidrive.strato.com: /media/hidrive</div></div>
|
||||
|
||||
<p><br /></p>
|
||||
|
||||
<hr />
|
||||
|
||||
<p><strong>Edit:</strong></p>
|
||||
|
||||
<h3>Nachtrag</h3>
|
||||
|
||||
<p>Wie Jens in den Kommentaren richtig anmerkt, muss man noch die fusermount-Konfiguration anpassen, damit das Einbinden auch für normale user funktioniert. Beim mount bemerkt fusermount sonst auch ganz korrekt:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf</div></div>
|
||||
|
||||
<p>Die Zeile "user_allow_other" ist in /etc/fuse.conf auch schon vorhanden und muss nur wieder einkommentiert werden. Bei mir beschwert sich fusermount unter Ubuntu 12.04 (64 bit) allerdings außerdem noch über die Zugriffsrechte:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">fusermount: failed to open /etc/fuse.conf: Permission denied</div></div>
|
||||
|
||||
<p>Sobald ich die Datei per chmod zum Lesen für alle Benutzer freigegeben habe, ist auch dieser Fehler verschwunden. Danach können dann auch normale Benutzer das hidrive mounten.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-161"></a>
|
||||
<div class="comment comment-by-anonymous odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">23. July 2011 - 12:33 — <a href="http://www.andreaswittig.info/" rel="nofollow" class="username">Andreas</a></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/161/#comment-161" class="permalink" rel="bookmark">Funktioniert das bei dir</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Funktioniert das bei dir noch? Bei mir kommt nach dem Login "remote host has disconnected".</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div class="indented"><a id="comment-162"></a>
|
||||
<div class="comment comment-by-anonymous even">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">20. September 2011 - 14:47 — <a href="http://www.stromanbietertest.com/contact" rel="nofollow" class="username">Stroman</a></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/162/#comment-162" class="permalink" rel="bookmark">Bei mir gibt's dasselbe</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Bei mir gibt's dasselbe Problem.</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div class="indented"><a id="comment-184"></a>
|
||||
<div class="comment comment-by-anonymous odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">17. November 2011 - 21:44 — <span class="username">Anonym</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/184/#comment-184" class="permalink" rel="bookmark">Also bei mir geht es</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Also bei mir geht es wunderbar :)</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
</div></div><a id="comment-185"></a>
|
||||
<div class="comment comment-by-anonymous even">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">19. November 2011 - 15:03 — <a href="http://www.stenneken.de/" rel="nofollow" class="username">Jens Stenneken</a></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/185/#comment-185" class="permalink" rel="bookmark">Ubuntu 11.10</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Hallo,</p>
|
||||
|
||||
<p>vielen Dank für den Tipp.</p>
|
||||
|
||||
<p>Klappt wunderbar auch unter der neusten Ubuntu Version 11.10 64bit.</p>
|
||||
|
||||
<p>Aber man muss noch die Datei /etc/fuse.conf bearbeitet und:</p>
|
||||
|
||||
<p>user_allow_other hinzufügen.</p>
|
||||
|
||||
<p>Gruß
|
||||
Jens</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/228 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:22 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/229 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:22 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>MongoDB und node.js auf Ubuntu 9.04 Jaunty installieren | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"H6X-ndpvQtRP1dTr3GPJj3eViaLSY2RUrOObM_a0Tqc","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-229 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">MongoDB und node.js auf Ubuntu 9.04 Jaunty installieren</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-229" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">26. August 2010 - 13:33 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><div class="geshifilter"><div class="text geshifilter-text">sudo vim /etc/apt/sources.list<br />
|
||||
> # MongoDB<br />
|
||||
> deb http://downloads.mongodb.org/distros/ubuntu 9.4 10gen<br />
|
||||
<br />
|
||||
sudo aptitude update && sudo aptitude install mongodb-stable<br />
|
||||
<br />
|
||||
sudo /etc/init.d/mongodb start<br />
|
||||
<br />
|
||||
git clone http://github.com/ry/node.git<br />
|
||||
cd node<br />
|
||||
git checkout -b tags/v0.2.0<br />
|
||||
./configure --prefix=/home/martin<br />
|
||||
make<br />
|
||||
make install<br />
|
||||
<br />
|
||||
curl http://npmjs.org/install.sh | sh<br />
|
||||
npm install mongodb mustache</div></div>
|
||||
|
||||
<p>http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/229 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:22 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,441 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/23 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:34 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Apache 2.2.2, MySQL 5.0.21, PHP 5.1.4 und Subversion 1.3.1 | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"qV_Hs2e_NeOi38yzlImvmhpCwig0qc0kC8jqRgEWUXU","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-23 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Apache 2.2.2, MySQL 5.0.21, PHP 5.1.4 und Subversion 1.3.1</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-23" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">27. May 2006 - 1:47 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Anmerkung: Dieses Protokoll ist mit besserer Formatierung unter <a href="http://www.siarp.de/installation-log.html">http://www.siarp.de/installation-log.html</a> abgelegt.</p>
|
||||
<div style="font-size: small; text-align: center;">- Ziel: Apache, MySQL, PHP und Subversion auf den Hosteurope vServer unter SuSE 9.1 separat installieren -</div>
|
||||
<h1>siarp Neuinstallation (Kofler/Subversion-Mischung plus ein paar Extras)</h1>
|
||||
<!--break--><h2>MySQL, Apache, PHP 5</h2>
|
||||
<ul><li>
|
||||
Nach Empfehlung von <a href="http://www.kofler.cc/forum/forumthread.php?rootID=3538">http://www.kofler.cc/forum/forumthread.php?rootID=3538</a> deinstalliere ich Apache, PHP und MySQL über yast.<br />
|
||||
Dabei ignoriere ich sämtliche Abhängigkeiten mit irgendwelchen installierten 'frontpage extensions', 'mambo' und vor allem dem Paket 'psa' → Plesk wird kastriert.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ rcapache2 stop<br />
|
||||
$ yast<br /><em>→ nach 'mysql', 'php' und 'apache' suchen, alles raushauen und neu starten</em>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Ich lege im Home-Verzeichnis von root ein Verzeichnis <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">siarp</span> an, in dem ich herunterladen und entpacken kann. Dahin lade ich die Apache-Quellen, MySQL, PHP und Subversion.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd ~<br /><br />
|
||||
$ md siarp<br />
|
||||
$ cd siarp<br />
|
||||
$ wget http://ftp.wayne.edu/apache/httpd/httpd-2.2.2.tar.gz<br />
|
||||
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.0/MySQL-server-5.0.21-0.glibc23.i386.rpm/from/ftp://ftp.fu-berlin.de/unix/databases/mysql/<br />
|
||||
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.0/MySQL-client-5.0.21-0.glibc23.i386.rpm/from/ftp://ftp.fu-berlin.de/unix/databases/mysql/<br />
|
||||
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.0/MySQL-devel-5.0.21-0.glibc23.i386.rpm/from/ftp://ftp.fu-berlin.de/unix/databases/mysql/<br />
|
||||
$ wget http://dev.mysql.com/get/Downloads/MySQL-5.0/MySQL-shared-5.0.21-0.glibc23.i386.rpm/from/ftp://ftp.fu-berlin.de/unix/databases/mysql/<br />
|
||||
$ wget http://de2.php.net/get/php-5.1.4.tar.gz/from/de3.php.net/mirror
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Dann noch entpacken:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ gunzip httpd-2.2.2.tar.gz<br />
|
||||
$ gunzip php-5.1.4.tar.gz<br />
|
||||
$ tar -xvf httpd-2.2.2.tar<br />
|
||||
$ tar -xvf php-5.1.4.tar
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
MySQL installieren
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd ~/siarp<br />
|
||||
$ rpm -i MySQL*.rpm
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Weiter nach der <a href="http://www.kofler.cc/forum/forumthread.php?rootID=3538">Kofler-Anleitung</a>:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ wget http://kent.dl.sourceforge.net/sourceforge/libpng/zlib-1.2.3.tar.gz<br />
|
||||
$ wget ftp://xmlsoft.org/libxml2/libxml2-2.6.24.tar.gz<br />
|
||||
$ gunzip zlib-1.2.3.tar.gz<br />
|
||||
$ gunzip libxml2-2.6.24.tar.gz<br />
|
||||
$ tar -xvf zlib-1.2.3.tar<br />
|
||||
$ tar -xvf libxml2-2.6.24.tar
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Installation der Libraries
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd zlib-1.2.3/<br />
|
||||
$ ./configure<br />
|
||||
$ make<br />
|
||||
$ make install<br />
|
||||
$ cd ..<br />
|
||||
$ cd libxml2-2.6.24/<br />
|
||||
$ ./configure<br />
|
||||
$ make<br />
|
||||
$ make install<br />
|
||||
$ cd ..
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Apache2 in <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2</span> installieren. Ich habe hier noch ein paar zusätzliche Module aktiviert, WebDAV wird von Subversion benötigt.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd httpd-2.2.2/<br />
|
||||
$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-dav --enable-ssl --enable-alias --enable-dir --enable-deflate<br />
|
||||
$ make<br />
|
||||
$ make install<br />
|
||||
$ cd ..
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
PHP installieren
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd php-5.1.4/<br />
|
||||
$ ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml-dir=/usr/local/lib --with-zlib --with-zlib-dir=/usr/local/lib --with-mysql=/usr --with-mysqli=/usr/bin/mysql_config --with-gd --enable-soap --enable-sockets<br />
|
||||
$ make<br />
|
||||
$ make install
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
In die <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2/conf/httpd.conf</span> füge ich in Zeile 55 ein:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
#siarp (manuell eingefuegt nach php-Installation)<br />
|
||||
AddType application/x-httpd-php .php
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Testlauf
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ /usr/local/apache2/bin/apachectl start<br />
|
||||
$ touch /usr/local/apache2/htdocs/phptest.php
|
||||
</div>
|
||||
<p> Dann in die Datei <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">phptest.php</span> die Zeile <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;"><?php phpinfo(); ?></span> einfügen und speichern. Und siehe: Die PHP-Konfiguration ist <a href="http://www.siarp.de/phptest.php">einsehbar</a>.
|
||||
</p></li>
|
||||
<li>
|
||||
<span style="font-weight: bold;">Aber: Schon verhält er sich komisch!</span> HTML-Seiten, in denen auf ein Bild verwiesen wird, werden nicht ausgeliefert. (Wieder das Dateigrößen-Problem?)<br /><span style="font-weight: bold;">Nach etwas Suchen dann die Lösung:</span> In der <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">httpd.conf</span> muss die Zeile "<span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">EnableSendfile off</span>" aktiviert werden (Z. 360). → Die Sendfile-Unterstützung wurde beim Kompilieren wohl nicht richtig erkannt; ein Klassiker.<br /><span style="font-weight: bold;">Frage:</span> Sollte auch MMAP (Zeile darüber) deaktiviert werden? (Das war der Standard-Trick beim XAMPP.) Da MMAP und Sendfile aber wohl für Performanceverbesserungen stehen (größerer Adressraum, glaube ich), lasse ich zumindest MMAP bis auf Weiteres drin.
|
||||
</li>
|
||||
<li>
|
||||
Weil's bis hierher so schön lief, logge ich mich in Virtuzzo ein, und erstelle vor der Subversion-Installation noch ein Backup.:<br />
|
||||
"May 27, 2006 01:48:45 PM, 580.83 Mb" (SuSE-Apache, -PHP und -MySQL deinstalliert und separat installiert)
|
||||
</li>
|
||||
</ul><h2>Subversion: Installation</h2>
|
||||
<ul><li>
|
||||
Erst mal zurück nach Hause und Subversion herunterladen und entpacken
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd ~/siarp<br />
|
||||
$ wget http://subversion.tigris.org/downloads/subversion-1.3.1.tar.gz<br />
|
||||
$ gunzip subversion-1.3.1.tar.gz<br />
|
||||
$ tar -xvf subversion-1.3.1.tar
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Jetzt mit den magischen Parametern installieren. (Im Wesentlichen nach <a href="http://svn.collab.net/repos/svn/trunk/INSTALL">http://svn.collab.net/repos/svn/trunk/INSTALL</a> mit Hilfe von <a href="http://iedb.org/blog/howtos/svn_install_de/">http://iedb.org/blog/howtos/svn_install_de/</a>.)
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd subversion-1.3.1/<br />
|
||||
$ ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib
|
||||
</div>
|
||||
<p> Am Schluss heult <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">configure</span> noch rum, dass keine BerkeleyDB installiert ist. Wunderbar, FSFS ist sowieso moderner. (→ <a href="http://svnbook.red-bean.com/en/1.1/ch05.html#svn-ch-5-sect-1.3.2">http://svnbook.red-bean.com/en/1.1/ch05.html#svn-ch-5-sect-1.3.2</a> und Vergleich unter <a href="http://svnbook.red-bean.com/en/1.2/svn.reposadmin.html#svn.reposadmin.basics.backends">http://svnbook.red-bean.com/en/1.2/svn.reposadmin.html#svn.reposadmin.basics.backends</a>)<br />
|
||||
Und weiter:</p>
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ make<br />
|
||||
$ make install
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Leider will Apache jetzt nicht mehr starten und meldet<br /><span style="color:#707070; font-style: italic;"><br />
|
||||
httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_dav_svn.so into server: libsvn_repos-1.so.0: cannot open shared object file: No such file or directory<br /></span><br />
|
||||
Aber das kenne ich schon vom XAMPP - Google hilft. Unter <a href="http://svn.haxx.se/users/archive-2004-11/0390.shtml">http://svn.haxx.se/users/archive-2004-11/0390.shtml</a> wird mir empfohlen, in der Datei <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/etc/ld.so.conf</span> die Zeile <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/lib</span> einzufügen. Da die bereits vorhanden ist und ich ja auf die Libraries vom separat installierten Apache verweisen möchte, versuche ich es mit <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2/lib</span> (weil <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">make install</span> am Schluss ausgiebt, dass die Libraries dorthin installiert wurden). Danach muss die Konfiguration erneuert werden:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ /sbin/ldconfig
|
||||
</div>
|
||||
<p> Und schon will er wieder.
|
||||
</p></li>
|
||||
</ul><h2>Subversion: Konfiguration</h2>
|
||||
<ul><li>
|
||||
Erste Frage: Wohin mit dem Repository? (Ich habe diese UNIX-Verzeichnisstruktur nie so wirklich verinnerlicht.) Nach einem Blick in <a href="http://de.wikibooks.org/wiki/Linux-Kompendium:_Verzeichnisse_unter_Linux">http://de.wikibooks.org/wiki/Linux-Kompendium:_Verzeichnisse_unter_Linux</a> bin ich nur unwesentlich schlauer und entscheide ich mich für <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/home/svn-repos</span>.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd /home<br />
|
||||
$ md svn-repos
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Die zweite Frage ist, wofür und wieviele Repositories angelegt werden sollten. Ich beginne mal mit <a href="http://www.siarp.de/svn/siarp">siarp</a>. Subversion arbeitet dabei als Benutzer <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">svn</span>.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd /home/svn-repos<br />
|
||||
$ md siarp<br />
|
||||
$ svnadmin create /home/svn-repos/siarp<br />
|
||||
$ chown -R svn.svn /home/svn-repos/siarp<br />
|
||||
$ chmod -R ug+w /home/svn-repos/siarp<br />
|
||||
$ chmod ug+s /home/svn-repos/siarp /home/svn-repos/siarp/*
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Damit die Repositories etwas schöner gelistet werden, bringt Subversion noch ein Stylesheet für Apache mit, das in die <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">htdocs</span> muss.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ cd ~/siarp/subversion-1.3.1/tools/xslt/<br />
|
||||
$ md /usr/local/apache2/htdocs/subversion-xslt<br />
|
||||
$ cp * /usr/local/apache2/htdocs/subversion-xslt<br />
|
||||
$ chmod 644 /usr/local/apache2/htdocs/subversion-xslt/*
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Apache muss auf die Repositories zugreifen können. In der Subversion-Installationsanleitung heißt es dazu lapidar:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
NOTE: Make sure that the user 'nobody' (or whatever UID the httpd process runs as) has permission to read and write the Berkeley DB files! This is a very common problem.
|
||||
</div>
|
||||
<p> Davon weiß ich allerdings nicht, wie man das am sinnvollsten regelt. Auch im <a href="http://svnbook.red-bean.com/en/1.2/svn.serverconfig.httpd.html#svn.serverconfig.httpd.basic">Subversion Handbuch</a> steht nur was von <cite>"There is no single correct way to set up your permissions"</cite>.<br />
|
||||
Die Repositories einfach allgemein freigben? In der schönen (und häufig zitierten) <a href="http://iedb.org/blog/howtos/svn_install_de/">Deadbeef-Anleitung für Apache+Subversion</a> wird einfach der gesamte Apache mit dem svn-User gestartet. Allerdings geht das nur, wenn man den Server <a href="http://svn.haxx.se/users/archive-2004-10/1024.shtml">nicht auf den Standard-Ports betreibt</a>. Meine Lösung wird im Subversion Handbuch zwar nur angedeutet, sollte aber korrekt sein: Dem Apache über die <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">httpd.conf</span> mitteilen, dass er als Nutzer <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">svn</span> agieren soll. Also die Zeilen 70 und 71 ändern auf. (Davor lief Apache als <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">daemon</span>.)</p>
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
User svn<br />
|
||||
Group svn
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Jetzt muss noch Apache das neue Repository in der <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">https.conf</span> bekannt gegeben werden:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
# siarp Subversion-Anhang<br />
|
||||
<Location /svn/siarp><br />
|
||||
DAV svn<br />
|
||||
SVNPath /home/svn-repos/siarp<br />
|
||||
SVNIndexXSLT "/subversion-xslt/svnindex.xsl"<br />
|
||||
AuthType Basic<br />
|
||||
AuthName "siarp.de repository"<br />
|
||||
AuthUserFile /home/svn-repos/svn-auth-file<br />
|
||||
Require user martin tilman<br />
|
||||
</Location>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Für die Nutzerverwaltung braucht Subversion ein Userfile, das ich unter <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/home/svn-repos/svn-auth-file</span> anlegen will. Dafür muss ich das htpasswd-Tool vom Apache benutzen:
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ /usr/local/apache2/bin/htpasswd -cm /home/svn-repos/svn-auth-file tilman<br /><span style="color:#707070; font-style: italic;"><br />
|
||||
New password:<br />
|
||||
Re-type new password:<br />
|
||||
Adding password for user tilman<br /></span>
|
||||
</div>
|
||||
<p> <span style="font-weight: bold;">Neue Benutzer</span> fügt man mit dem Befehl <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2/bin/htpasswd -m /home/svn-repos/svn-auth-file <em>benutzername</em></span> hinzu.
|
||||
</p></li>
|
||||
<li>
|
||||
Das war's. Subversion ist unter <a href="http://www.siarp.de/svn/siarp/">http://www.siarp.de/svn/siarp/</a> erreichbar, sobald Apache gestartet ist.
|
||||
<div style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">
|
||||
$ /usr/local/apache2/bin/apachectl start
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
Als krönenden Abschluss kopiere ich mein Protokoll in <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">htdocs</span>, so dass es unter <a href="http://www.siarp.de/installation-log.html">http://www.siarp.de/installation-log.html</a> erreichbar ist und mache mit Virtuzzo ein Backup ("May 27, 2006 05:41:32 PM, 707.27 Mb").
|
||||
</li>
|
||||
</ul><p><a id="zusammenfassung"></a></p>
|
||||
<h2>Zusammenfassung, To-Do und Fragen</h2>
|
||||
<p>
|
||||
So weit, so gut. Wir haben jetzt Apache mit MySQL und PHP und außerdem ein funktionierendes Subversion. Was muss jetzt noch kommen?
|
||||
</p>
|
||||
<ul><li>Subversion mit SSL nutzen. Dafür habe ich Apache mit --enable-ssl kompiliert, aber noch nix probiert.</li>
|
||||
<li>MySQL testen. Noch nicht gemacht.</li>
|
||||
<li>Eventuell noch etwas Sicherheits-Tuning. MySQL ist noch unkonfiguriert (Passwort) und der Subversion-User ist auch noch ohne Passwort.</li>
|
||||
<li>Noch mal eine schöne "Wie legt man ein Repository an"-Anleitung, die man dann nur noch abarbeiten muss</li>
|
||||
<li>Automatisiertes Backup für Repositories und htdocs. Was noch?</li>
|
||||
<li>Vielleicht sollte Apache nach einem Reboot automatisch starten. Wie das geht steht in der <a href="http://www.kofler.cc/forum/forumthread.php?rootID=3538">Kofler-Anleitung</a>.</li>
|
||||
<li>Noch mal die Frage: Brauchen wir System-Nutzer-Accounts? Oder müssen wir sowieso als root arbeiten, bei dem, was wir tun?</li>
|
||||
</ul><p>
|
||||
Allgemeine Bemerkungen zur Konfiguration
|
||||
</p>
|
||||
<ul><li>Apache wird gestartet mit <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2/bin/apachectl start</span></li>
|
||||
<li>Die Webseite liegt unter <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/usr/local/apache2/htdocs/</span>, die Repositories unter <span style="font-family: 'Courier New', monospace; margin-top: 0.5ex; margin-bottom: 0.5ex;">/home/svn-repos/</span></li>
|
||||
<li>Wir sollten wohl doch für jedes Projekt ein extra Repository anlegen, da sonst das System der Gesamt-Versionsnummer von Subversion keinen Sinn macht</li>
|
||||
</ul><p><a id="backup"></a></p>
|
||||
<h2>Further reading: Backup und Vorsorge</h2>
|
||||
<ul><li>
|
||||
Noch ein paar Überlegungen zum Thema Backup: Virtuzzo geht relativ fix (ca. 20 Min), allerdings sind nur zwei Backups möglich. Also am besten später mal durch ein Backup des komplett eingerichteten Systems ersetzen. Dann hat man immer noch ein Backup für akutes übrig.
|
||||
</li>
|
||||
<li>
|
||||
Im Hosteurope-Hilfesystem wird außerdem <a href="http://reoback.sourceforge.net/">ReoBack</a> empfohlen. Vielleicht bei Gelegenheit mal anschauen.
|
||||
</li>
|
||||
<li>
|
||||
Noch was anderes: Anscheinend kann man (im Gegensatz zu den WebPacks) den Traffic nicht hart limitieren. Bis jetzt hatten wir beim Rumbasteln immer unter 400MB im Monat. Freivolumen ist laut KIS 250GB (die neuen Pakete haben 500GB bei gleichem Preis, das hätten sie ruhig mal rückwirkend upgraden können), das macht also ca. 8GB am Tag. Ich habe jedenfalls erst mal eine Warnbenachrichtigung bei mehr als 2GB am Tag eingerichtet.
|
||||
</li>
|
||||
<li>
|
||||
Hab mich bei der Suche nach einer harten Traffic-Begrenzung nochmal in Plesk eingeloggt. Das ist jetzt wohl wirklich blind und taub, man bekommt keine Server-Optionen mehr angezeigt.
|
||||
</li>
|
||||
</ul><h2>Dank an (Linksammlung)</h2>
|
||||
<ul><li><a href="../../">http://www.siarp.de/</a></li>
|
||||
<!--
|
||||
<li><p><a href="http://80.237.161.173/">http://80.237.161.173/</a></li>
|
||||
<li><a href="https://80.237.161.173:4643/vz/cp">https://80.237.161.173:4643/vz/cp</a></li>
|
||||
<li><a href="http://siarpde.standartimnetz.de/">http://siarpde.standartimnetz.de/</a></li>
|
||||
<p>-->
|
||||
<li><a href="http://www.kofler.cc/forum/forumthread.php?rootID=3538">http://www.kofler.cc/forum/forumthread.php?rootID=3538</a></li>
|
||||
<li><a href="http://www.bananas-playground.net.php?p=tutorials&m=svn.scratch#subversion">http://www.bananas-playground.net.php?p=tutorials&m=svn.scratch#subversion</a></li>
|
||||
<li><a href="http://svn.collab.net/repos/svn/trunk/INSTALL">http://svn.collab.net/repos/svn/trunk/INSTALL</a></li>
|
||||
<li><a href="http://forum.subversionbuch.de/viewtopic.php?t=62">http://forum.subversionbuch.de/viewtopic.php?t=62</a></li>
|
||||
<li><a href="http://www.apachefriends.org/f/viewtopic.php?t=17636">http://www.apachefriends.org/f/viewtopic.php?t=17636</a></li>
|
||||
<li><a href="http://iedb.org/blog/?page_id=12">http://iedb.org/blog/?page_id=12</a></li>
|
||||
<li><a href="http://dev.mysql.com/tech-resources/articles/4.1/unicode.html">http://dev.mysql.com/tech-resources/articles/4.1/unicode.html</a></li>
|
||||
</ul></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-2"></a>
|
||||
<div class="comment comment-by-node-author odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">27. May 2006 - 9:47 — <span class="username">Tilman</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/2/#comment-2" class="permalink" rel="bookmark">Mehrere Repositories mit einem httpd.conf-Eintrag</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Wie gesagt, es muss noch ein Repositories-erstellen-HowTo folgen. Um es zu dokumentieren schon mal die Bemerkung:</p>
|
||||
<p>Man muss nicht unbedingt jedes Repository einzeln in die httpd.conf eintragen, sondern kann dort auch einen SVNParentPath angeben. Alle Repositories, die in diesem Verzeichnis liegen, werden dann automatisch gelistet. Nachteil: Keine getrennte Benutzerverwaltung für die verschiedenen Repositories (soweit mir bekannt --> nochmal prüfen)</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
<a id="comment-3"></a>
|
||||
<div class="comment comment-by-node-author even">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">27. May 2006 - 10:00 — <span class="username">Tilman</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/3/#comment-3" class="permalink" rel="bookmark">Weitere Apache-Module</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Sammlung: Module, die vielleicht auch noch schön für'n Apache wären. (Lassen sich durch --enable-so ja nachträglich einbinden.)</p>
|
||||
<p>- mod_deflate<br />
|
||||
Dazu Zitat aus der Subversion-Installationsanleitung:<br />
|
||||
If you have configured mod_deflate to be in the server, you can enable compression support for your repository by adding the following line to your Location block: <span class="geshifilter"><code class="text geshifilter-text">SetOutputFilter DEFLATE</code></span></p>
|
||||
<p>- mod_mime<br />
|
||||
MIME-Zuordnung nach Dateinamenerweiterung</p>
|
||||
<p>- mod_dav_fs<br />
|
||||
Dieses Modul bietet Zugriff auf das _lokale_ Dateisystem, falls gebraucht. So oder so ist WebDAV an sich noch mal einen Blick wert.</p>
|
||||
<p>- mod_vhost_alias<br />
|
||||
Wird's gebraucht? Ich hab noch nicht so die Ahnung von vHost-Konzept.</p>
|
||||
<p>- mod_dir<br />
|
||||
Das habe ich vergessen. Directory-Listings sind mitunter schon ganz praktisch.</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
<a id="comment-4"></a>
|
||||
<div class="comment comment-by-node-author odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">27. May 2006 - 12:51 — <span class="username">Tilman</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/4/#comment-4" class="permalink" rel="bookmark">PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>To do so, start the server, then issue the following commands:<br />
|
||||
/usr/bin/mysqladmin -u root password 'new-password'<br />
|
||||
/usr/bin/mysqladmin -u root -h lvps80-237-161-173.dedicated.hosteurope.de password 'new-password'<br />
|
||||
See the manual for more instructions.</p>
|
||||
</div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/23 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:40 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,176 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/231 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:15 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Reinventing the wheel: Automatic Bidirectional Directory Synchronization | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"qd_xj_ZDClHClV_XMFLbEgOPTwRY39FX6383IOSuiQ0","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-231 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Reinventing the wheel: Automatic Bidirectional Directory Synchronization</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-231" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">21. March 2011 - 19:11 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>As <a href="../228/">already mentioned</a>, I am the proud owner of an online hard drive and I love it. Enough space for everything that's worth keeping, secure access over lots of different protocols (including rsync), an automatic backup function... It would be perfect if I had an Internet connection of at least 100 MBit/s. But I haven't. (Actually the thing almost feels like a local disk when I use it from my computer at work. But that's through a university network.) So I had to come up with a little more sophisticated architecture. I bought a <a href="http://www.globalscaletechnologies.com/t-guruplugdetails.aspx">GuruPlug</a> server and added an external USB hard drive to it. The basic idea is to use the USB drive over the LAN while at home but still being able to have all data synchronized to the online hard drive in order to have automatic backup and fast access from everywhere else. I thought that the sychronization part would be the easiest as there is a plethora of software available for this task but when I had a closer look at the tools, I ran into problems:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://samba.anu.edu.au/rsync/">rsync</a>, the best known synchronization software only does unidirectional synching. (So it's a mirroring tool, not a synchronization tool, to be correct.) But I want to be able to change files at home on the local drive and on the go on the online drive and have them automatically sychronized overnight.</li>
|
||||
<li><a href="http://www.cis.upenn.edu/~bcpierce/unison/">Unison</a> does bidirectional synchronization, also using the heavily traffic-optimized rsync protocol. Sounds perfect. But unison <a href="https://alliance.seas.upenn.edu/~bcpierce/wiki.php?n=Main.UnisonFAQTips">does not really work on locally mounted remote drives</a> as it apparently calculates a hash sum for each and every file which results in <em>downloading the entire online hard drive.</em> (Currently 135 GB in my case.) Usually one would use a unison server for that, calculating the hashes locally on both sides but I do not have shell access to the server - it's only a hard drive.</li>
|
||||
<li><a href="http://jfilesync.sourceforge.net/">JFileSync</a>, my personal favorite, does bidirectional synchronization and can run from the shell. But when I tried to use it for my "135 GB, 70000 files" directory, it blew up my server's memory as it does a complete comparison in the first step, putting the pending actions for all files in an xml structure, as far as I can tell. (I have to add that the directories were almost in sync at that time. So it's not only because of the huge number of actions for the first sychronization.)</li>
|
||||
</ul>
|
||||
|
||||
<p>Is it really that hard to have two directories synchronized with the files only compared by their size and their timestamp? I ended up writing my own SyncTool in Java. And while I was at it, I added the possibility to receive the synchronization protocol via Jabber.</p>
|
||||
|
||||
<h2>Libraries used</h2>
|
||||
|
||||
<p>I am standing on the shoulders of giants here, I have to say. The tool uses <a href="http://www.h2database.com/">H2</a> to keep track of the files, the <a href="http://commons.apache.org/">Apache Commons</a> and <a href="http://logging.apache.org/log4j/">log4j</a> for the actual copy procedure and log output, <a href="http://martiansoftware.com/jsap/">JSAP</a> to parse the command line and <a href="http://www.igniterealtime.org/projects/smack/">Smack</a> to connect to Jabber. So all I did was implementing the actual synchronization algorithm: Read the file list, compare and synchronize, recurse. Done using Eclipse and Maven.</p>
|
||||
|
||||
<h2>Where to get it</h2>
|
||||
|
||||
<p>If you want to do something similar and don't have the time to reinvent the wheel once again, you can <a href="http://www.tilman.de/programme/synctool.en.php">download the SyncTool from my homepage</a>. Available as open source under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0.</a></p>
|
||||
|
||||
<h2>How to use it</h2>
|
||||
|
||||
<p>The software is intended to work in batch mode and thus performs bidirectional synchronization only without conflict resolution of any kind. If a file was modified on both sides, the older one being dismissed and overwritten by the newer one. (It should be no problem, however, to add a feature like a --dont-overwrite-conflicting-files with a few lines of additional code.) That being said, the second thing you have to think about is that you need a Java JRE. The Open JDK 6 JRE works pretty well with the program on my server, just apt-get install default-jre.</p>
|
||||
|
||||
<p>Remember to backup your files, this software comes with ABSOLUTELY NO WARRANTY.</p>
|
||||
|
||||
<p>This is the help page:</p>
|
||||
|
||||
<pre><code>Usage: java -jar synctool-1.0.8.jar <source path> <destination path> [(-f|--dbfile) <database file>] [(-l|--logfile) <logfile>] [(-j|--jabber) <jabber address>] [(-r|--server) <jabber server>] [(-u|--user) <jabber user>] [(-p|--password) <jabber password>] [-d|--dry-run] [-h|--hashing] [-i|--ignore-directory-attributes] [-s|--silent] [--debug] [-?|--help]
|
||||
|
||||
<source path>
|
||||
the source path
|
||||
|
||||
<destination path>
|
||||
the destination path
|
||||
|
||||
[(-f|--dbfile) <database file>]
|
||||
the path to the database file to use (default: synctool)
|
||||
|
||||
[(-l|--logfile) <logfile>]
|
||||
the path for a logfile to write
|
||||
|
||||
[(-j|--jabber) <jabber address>]
|
||||
send logging output as jabber message to the given address
|
||||
|
||||
[(-r|--server) <jabber server>]
|
||||
the jabber server to connect to
|
||||
|
||||
[(-u|--user) <jabber user>]
|
||||
the jabber user name used for logging in to the server
|
||||
|
||||
[(-p|--password) <jabber password>]
|
||||
the jabber password used for logging in to the server
|
||||
|
||||
[-d|--dry-run]
|
||||
perform a trial run with no changes made
|
||||
|
||||
[-h|--hashing]
|
||||
generate MD5 file hashes for exact comparison
|
||||
|
||||
[-i|--ignore-directory-attributes]
|
||||
do not copy attributes for directories
|
||||
|
||||
[-s|--silent]
|
||||
do not print "Entering directory" and "No operation" messages
|
||||
|
||||
[--debug]
|
||||
print debug messages
|
||||
|
||||
[-?|--help]
|
||||
print help and exit
|
||||
</code></pre>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/231 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:15 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,508 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/232 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:12 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Speedport W 723V (A) - automatischer Abruf der Anruferliste und Abgleich mit Google Contacts | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"OYLk4rv5VGwjspcp5Bz0LblG4xW6rv8nS1SjDyZPY2s","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-232 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Speedport W 723V (A) - automatischer Abruf der Anruferliste und Abgleich mit Google Contacts</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-232" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">30. July 2012 - 22:35 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Seit kurzem haben wir VDSL von der Telekom (yeah!) und deshalb einen neuen Router. Das Gerät ist ein <a href="http://de.wikipedia.org/wiki/Speedport">Speedport</a> W 723V A mit relativ vielen Funktionen. Unter anderem können DECT-Telefone direkt angebunden werden und brauchen dann keinen eigene Basisstation. Diese Funktion wollte ich gerne nutzen, weil beim Anschluss des Telefons über die analoge TAE-Buchse nur eine Leitung genutzt werden kann und außerdem die Sprachqualität über die analoge Schnittstelle eher mäßig war. Das Problem: Entgangene Anrufe werden nicht mehr an die Telefone übermittelt, sondern müssen über das Web-Interface nachgeschaut werden - inakzeptabel. Zumindest beim Typ A vom 723 V ist wohl schon der neue Standard CATiq-2.0 implementiert, mit dem die Anruferliste an die Telefone übertragen werden kann. Nur kennen unsere Gigaset C300 Telefone den Standard leider noch nicht. Statt neue Telefone zu kaufen machen wir das Ganze einfach selbst und viel besser: Das folgende Java-Programm ruft die Liste vom Router ab und sendet bei neuen Anrufen eine E-Mail an beliebig viele Empfänger. So bekommen wir sogar unterwegs mit, wenn wir zu Hause einen Anruf verpasst haben.</p>
|
||||
|
||||
<p>Download: <a href="../../sites/siarp.de/files/speedportcallerid.jar">speedportcallerid.jar</a></p>
|
||||
|
||||
<p><em>Wie immer alles auf eigene Gefahr! Das Programm speichert allerdings nichts und ändert auch keine Einstellungen im Router, so dass sich das Risiko in Grenzen hält :) Ob das Ganze auch mit dem Speedport W 723V B funktioniert, weiß ich nicht.</em></p>
|
||||
|
||||
<p>Der Aufruf funktioniert so:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">Usage: java -jar speedportcallerid.jar <router password> <update interval> <e-mail adress> <e-mail password> recipient1 recipient2 ... recipientN [--contacts] [--debug] [-?|--help]<br />
|
||||
<br />
|
||||
<router password><br />
|
||||
the login password for the Speedport W 723V (A) router<br />
|
||||
<br />
|
||||
<update interval><br />
|
||||
the interval beetween runs in minutes<br />
|
||||
<br />
|
||||
<e-mail adress><br />
|
||||
Google mail address to send from<br />
|
||||
<br />
|
||||
<e-mail password><br />
|
||||
the login password for the Google account<br />
|
||||
<br />
|
||||
recipient1 recipient2 ... recipientN<br />
|
||||
e-mail addresses to send notifications to<br />
|
||||
<br />
|
||||
[--contacts]<br />
|
||||
retrieve contacts from Google account and resolve caller names<br />
|
||||
<br />
|
||||
[--debug]<br />
|
||||
print debug messages<br />
|
||||
<br />
|
||||
[-?|--help]<br />
|
||||
print help and exit</div></div>
|
||||
|
||||
<p>Konkret lasse ich einen cronjob laufen, der alle 15 Minuten dieses Skript aufruft:</p>
|
||||
|
||||
<div class="geshifilter"><div class="bash geshifilter-bash"><span class="co0">#!/bin/sh</span><br />
|
||||
<span class="kw3">cd</span> <span class="sy0">/</span>media<span class="sy0">/</span>usb<span class="sy0">/</span>hidrive<span class="sy0">/</span>speedport<br />
|
||||
<span class="kw2">sudo</span> <span class="re5">-u</span> nobody java -Duser.timezone=Europe<span class="sy0">/</span>Berlin <span class="re5">-jar</span> speedportcallerid.jar <span class="re5">--contacts</span> <span class="sy0"><</span>ROUTER-PASSWORT<span class="sy0">></span> <span class="nu0">15</span> <span class="sy0"><</span>GMAIL-ADRESSE<span class="sy0">></span> <span class="sy0"><</span>GMAIL-PASSWORT<span class="sy0">></span> <span class="sy0"><</span>EMPFÄNGER1<span class="sy0">></span> <span class="sy0"><</span>EMPFÄNGER2<span class="sy0">></span></div></div>
|
||||
|
||||
<p>Der cronjob dazu sieht so aus:</p>
|
||||
|
||||
<div class="geshifilter"><div class="text geshifilter-text">*/15 * * * * /usr/local/bin/check-speedport.sh</div></div>
|
||||
|
||||
<p>Im Moment sind die Mail-Einstellungen auf den Gmail-Server festgelegt (StartTLS + Port 587) für andere Server muss der Code evtl. angepasst werden - vielleicht baue ich später dafür auch nochmal zusätzliche Parameter ein, wenn jemand Interesse hat.</p>
|
||||
|
||||
<h2>Nachtrag: Namensauflösung mit Gmail-Kontakten</h2>
|
||||
|
||||
<p>Das Programm tat was es soll, aber die Akzeptanz im Haushalt ließ zu wünschen übrig: "Woher soll ich denn wissen, wer das war, wenn da nur die Nummer steht!?" Na gut, ist wohl nicht so praktisch.<br />
|
||||
Man kann zwar im Router eine Telefonliste pflegen, aber leider wird die nicht für die Anzeige der Rufnummern auf der Weboberfläche verwendet. Außerdem müsste man dann sämtliche Kontakte nochmal im Speedport pflegen, was sicherlich auch nicht Sinn der Sache ist. Zum Glück hab ich ja ein Android-Handy und deshalb sämtliche Telefonnummern im Google-Account gespeichert. Man muss also nur nochmal nach den passenden Namen suchen, nachdem man die Rufnummern aus dem Speedport gefischt hat. Erledigt. Das Aufruf-Skript muss nur um den Parameter <span class="geshifilter"><code class="bash geshifilter-bash"><span class="re5">--contacts</span></code></span> ergänzt werden (s.o.)</p>
|
||||
|
||||
<h2>Code</h2>
|
||||
|
||||
<div class="geshifilter"><div class="java geshifilter-java"><span class="kw1">package</span> <span class="co2">de.tilman.callerid</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">java.io.BufferedReader</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.io.InputStreamReader</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.io.OutputStreamWriter</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.net.HttpURLConnection</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.net.URL</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.net.URLConnection</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.net.URLEncoder</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.util.Calendar</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.util.LinkedList</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.util.List</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">java.util.Properties</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">javax.mail.Message</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">javax.mail.Session</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">javax.mail.Transport</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">javax.mail.internet.InternetAddress</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">javax.mail.internet.MimeMessage</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.commons.codec.binary.Base64</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.log4j.BasicConfigurator</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.log4j.ConsoleAppender</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.log4j.Level</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.log4j.Logger</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">org.apache.log4j.PatternLayout</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">import</span> <span class="co2">com.google.gdata.client.Query</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.google.gdata.client.contacts.ContactsService</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.contacts.ContactEntry</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.contacts.ContactFeed</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.extensions.PhoneNumber</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAP</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAPException</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAPResult</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.Switch</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.UnflaggedOption</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co3">/**<br />
|
||||
* This class retrieves the list of missed calls from a Speedport W 723V (A)<br />
|
||||
* router and sends notifications to a list of e-mail addresses.<br />
|
||||
* <br />
|
||||
* @author Tilman Liero tliero@gmx.net<br />
|
||||
*/</span><br />
|
||||
<span class="kw1">public</span> <span class="kw1">class</span> CallerIdClient <span class="br0">{</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw1">final</span> <span class="kw1">static</span> Logger log <span class="sy0">=</span> Logger.<span class="me1">getLogger</span><span class="br0">(</span>CallerIdClient.<span class="kw1">class</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> TEXT_UNKNOWN <span class="sy0">=</span> <span class="st0">"unbekannt"</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> TEXT_MAILPREFIX <span class="sy0">=</span> <span class="st0">"Anruf von "</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> password<span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> updateInterval<span class="sy0">;</span><br />
|
||||
JSAPResult config<span class="sy0">;</span><br />
|
||||
LinkedList<span class="sy0"><</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span><span class="sy0">></span> calls <span class="sy0">=</span> <span class="kw1">new</span> LinkedList<span class="sy0"><</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span><span class="sy0">></span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> cookie <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">public</span> CallerIdClient<span class="br0">(</span>JSAPResult config<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">this</span>.<span class="me1">config</span> <span class="sy0">=</span> config<span class="sy0">;</span><br />
|
||||
<span class="kw1">this</span>.<span class="me1">password</span> <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">(</span>Base64.<span class="me1">encodeBase64</span><span class="br0">(</span>config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"router password"</span><span class="br0">)</span>.<span class="me1">getBytes</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">this</span>.<span class="me1">updateInterval</span> <span class="sy0">=</span> config.<span class="me1">getInt</span><span class="br0">(</span><span class="st0">"update interval"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">try</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"logging in to Speedport router"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
postUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/index/login.cgi"</span>, <span class="st0">"Username="</span> <span class="sy0">+</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlencoder"><span class="kw3">URLEncoder</span></a>.<span class="me1">encode</span><span class="br0">(</span><span class="st0">"admin"</span>, <span class="st0">"UTF-8"</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">"&"</span> <span class="sy0">+</span> <span class="st0">"Password="</span><br />
|
||||
<span class="sy0">+</span> password<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"retrieving call list"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
getUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/auth/hcti_status_telanrl.php?cookie=SessionID_R3,"</span> <span class="sy0">+</span> cookie<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"logging out"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
postUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/auth/logout.cgi?RequestFile=/pub/top_beenden.php&cookie=SessionID_R3,"</span> <span class="sy0">+</span> cookie, <span class="st0">""</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>calls.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">></span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<br />
|
||||
List<span class="sy0"><</span>ContactEntry<span class="sy0">></span> contacts <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"check contacts"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"retrieving Google contacts"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
ContactsService service <span class="sy0">=</span> <span class="kw1">new</span> ContactsService<span class="br0">(</span><span class="st0">"<var>SpeedportCallerIdClient</var>"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
service.<span class="me1">setUserCredentials</span><span class="br0">(</span>config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span>, config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> feedUrl <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span><span class="st0">"https://www.google.com/m8/feeds/contacts/default/full"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
Query myQuery <span class="sy0">=</span> <span class="kw1">new</span> Query<span class="br0">(</span>feedUrl<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
myQuery.<span class="me1">setMaxResults</span><span class="br0">(</span><span class="nu0">1000</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
ContactFeed resultFeed <span class="sy0">=</span> service.<span class="me1">query</span><span class="br0">(</span>myQuery, ContactFeed.<span class="kw1">class</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
contacts <span class="sy0">=</span> resultFeed.<span class="me1">getEntries</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"sending notifications"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> call <span class="sy0">:</span> calls<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time <span class="sy0">=</span> call<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> caller <span class="sy0">=</span> call<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>caller.<span class="me1">equals</span><span class="br0">(</span><span class="st0">" "</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
caller <span class="sy0">=</span> TEXT_UNKNOWN<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
numberSearch<span class="sy0">:</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span>ContactEntry contact <span class="sy0">:</span> contacts<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span>PhoneNumber phone <span class="sy0">:</span> contact.<span class="me1">getPhoneNumbers</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>phone.<span class="me1">getPhoneNumber</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">endsWith</span><span class="br0">(</span>caller.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">hasFullName</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
caller <span class="sy0">=</span> contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getFullName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getValue</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">" ("</span> <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">")"</span><span class="sy0">;</span><br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"found number in contact data for "</span> <span class="sy0">+</span> contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getFullName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getValue</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">break</span> numberSearch<span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
sendNotification<span class="br0">(</span>time, caller<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span> <span class="kw1">catch</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> e<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">error</span><span class="br0">(</span>e.<span class="me1">getMessage</span><span class="br0">(</span><span class="br0">)</span>, e<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"done"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw4">void</span> getUrl<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> urlString<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"getUrl("</span> <span class="sy0">+</span> urlString <span class="sy0">+</span> <span class="st0">")"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> url <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span>urlString<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlconnection"><span class="kw3">URLConnection</span></a> connection <span class="sy0">=</span> url.<span class="me1">openConnection</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
showHeaders<span class="br0">(</span>connection<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a> in <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+inputstreamreader"><span class="kw3">InputStreamReader</span></a><span class="br0">(</span>connection.<span class="me1">getInputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> line<span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>line <span class="sy0">=</span> in.<span class="me1">readLine</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">startsWith</span><span class="br0">(</span><span class="st0">"var in_call_list"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="co1">// analyze caller list</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> s <span class="sy0">=</span> line.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">39</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> result <span class="sy0">=</span> s.<span class="me1">split</span><span class="br0">(</span><span class="st0">"new Array<span class="es0">\\</span>("</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> x <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> x <span class="sy0"><</span> result.<span class="me1">length</span><span class="sy0">;</span> x<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="co1">// check for unanswered calls</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">lastIndexOf</span><span class="br0">(</span><span class="st0">'"'</span><span class="br0">)</span> <span class="sy0">-</span> <span class="nu0">8</span>, result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">lastIndexOf</span><span class="br0">(</span><span class="st0">'"'</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">equals</span><span class="br0">(</span><span class="st0">"00:00:00"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"Unanswered call: "</span> <span class="sy0">+</span> result<span class="br0">[</span>x<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="co1">// determine call time</span><br />
|
||||
<span class="kw4">int</span> year <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">7</span>, <span class="nu0">11</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> month <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">4</span>, <span class="nu0">6</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> date <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">3</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> hour <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">12</span>, <span class="nu0">14</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> min <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">15</span>, <span class="nu0">17</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw4">int</span> sec <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">18</span>, <span class="nu0">20</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a> callTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a>.<span class="me1">getInstance</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
callTime.<span class="me1">set</span><span class="br0">(</span>year, month <span class="sy0">-</span> <span class="nu0">1</span>, date, hour, min, sec<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a> lastCheck <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a>.<span class="me1">getInstance</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
lastCheck.<span class="me1">setTimeInMillis</span><span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">-</span> updateInterval <span class="sy0">*</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>callTime.<span class="me1">after</span><span class="br0">(</span>lastCheck<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time <span class="sy0">=</span> result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">20</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> number <span class="sy0">=</span> result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">23</span>, result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">indexOf</span><span class="br0">(</span><span class="st0">'"'</span>, <span class="nu0">23</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
calls.<span class="me1">add</span><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> <span class="br0">{</span> time, number <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="br0">}</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
in.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw4">void</span> postUrl<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> urlString, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> payload<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"postUrl("</span> <span class="sy0">+</span> urlString <span class="sy0">+</span> <span class="st0">", "</span> <span class="sy0">+</span> payload <span class="sy0">+</span> <span class="st0">")"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> url <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span>urlString<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+httpurlconnection"><span class="kw3">HttpURLConnection</span></a> connection <span class="sy0">=</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+httpurlconnection"><span class="kw3">HttpURLConnection</span></a><span class="br0">)</span> url.<span class="me1">openConnection</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setRequestMethod</span><span class="br0">(</span><span class="st0">"POST"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setInstanceFollowRedirects</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setDoInput</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setDoOutput</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setUseCaches</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
connection.<span class="me1">setRequestProperty</span><span class="br0">(</span><span class="st0">"Content-Length"</span>, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a>.<span class="me1">valueOf</span><span class="br0">(</span>payload.<span class="me1">length</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>cookie <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
connection.<span class="me1">setRequestProperty</span><span class="br0">(</span><span class="st0">"Cookie"</span>, <span class="st0">"SessionID_R3="</span> <span class="sy0">+</span> cookie<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+outputstreamwriter"><span class="kw3">OutputStreamWriter</span></a> writer <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+outputstreamwriter"><span class="kw3">OutputStreamWriter</span></a><span class="br0">(</span>connection.<span class="me1">getOutputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>payload.<span class="me1">length</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">></span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
writer.<span class="me1">write</span><span class="br0">(</span>payload<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
writer.<span class="me1">flush</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a> reader <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+inputstreamreader"><span class="kw3">InputStreamReader</span></a><span class="br0">(</span>connection.<span class="me1">getInputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> line<span class="sy0">;</span> <span class="br0">(</span>line <span class="sy0">=</span> reader.<span class="me1">readLine</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">!=</span> <span class="kw2">null</span><span class="sy0">;</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">startsWith</span><span class="br0">(</span><span class="st0">"SessionID_R3"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
cookie <span class="sy0">=</span> line.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">13</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">equals</span><span class="br0">(</span><span class="st0">"4"</span><span class="br0">)</span><span class="br0">)</span><br />
|
||||
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">" could not log in, Speedport adminstration account is currently in use"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="kw1">else</span><br />
|
||||
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">" received unexpected response: "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
writer.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
reader.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
showHeaders<span class="br0">(</span>connection<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw4">void</span> showHeaders<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlconnection"><span class="kw3">URLConnection</span></a> connection<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> headerName <span class="sy0">=</span> connection.<span class="me1">getHeaderFieldKey</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> headerValue <span class="sy0">=</span> connection.<span class="me1">getHeaderField</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>headerName <span class="sy0">==</span> <span class="kw2">null</span> <span class="sy0">&&</span> headerValue <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="co1">// No more headers</span><br />
|
||||
<span class="kw1">break</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>headerName <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="co1">// The header value contains the server's HTTP version</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" Server HTTP version, Response code: "</span> <span class="sy0">+</span> headerValue<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" Header: "</span> <span class="sy0">+</span> headerName <span class="sy0">+</span> <span class="st0">", Value: "</span> <span class="sy0">+</span> headerValue<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">private</span> <span class="kw4">void</span> sendNotification<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> caller<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> host <span class="sy0">=</span> <span class="st0">"smtp.gmail.com"</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> from <span class="sy0">=</span> config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> pass <span class="sy0">=</span> config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+properties"><span class="kw3">Properties</span></a> props <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">getProperties</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.starttls.enable"</span>, <span class="st0">"true"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.host"</span>, host<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.user"</span>, from<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.password"</span>, pass<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.port"</span>, <span class="st0">"587"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.auth"</span>, <span class="st0">"true"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> to <span class="sy0">=</span> config.<span class="me1">getStringArray</span><span class="br0">(</span><span class="st0">"recipient"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
Session session <span class="sy0">=</span> Session.<span class="me1">getDefaultInstance</span><span class="br0">(</span>props, <span class="kw2">null</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
MimeMessage message <span class="sy0">=</span> <span class="kw1">new</span> MimeMessage<span class="br0">(</span>session<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
message.<span class="me1">setFrom</span><span class="br0">(</span><span class="kw1">new</span> InternetAddress<span class="br0">(</span>from<span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
InternetAddress<span class="br0">[</span><span class="br0">]</span> toAddress <span class="sy0">=</span> <span class="kw1">new</span> InternetAddress<span class="br0">[</span>to.<span class="me1">length</span><span class="br0">]</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> to.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
toAddress<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">=</span> <span class="kw1">new</span> InternetAddress<span class="br0">(</span>to<span class="br0">[</span>i<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> toAddress.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
message.<span class="me1">addRecipient</span><span class="br0">(</span>Message.<span class="me1">RecipientType</span>.<span class="me1">TO</span>, toAddress<span class="br0">[</span>i<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
message.<span class="me1">setSubject</span><span class="br0">(</span>TEXT_MAILPREFIX <span class="sy0">+</span> caller<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
message.<span class="me1">setText</span><span class="br0">(</span>TEXT_MAILPREFIX <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">"<span class="es0">\n</span>"</span> <span class="sy0">+</span> time<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"sending message for call from "</span> <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">" at "</span> <span class="sy0">+</span> time<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
Transport transport <span class="sy0">=</span> session.<span class="me1">getTransport</span><span class="br0">(</span><span class="st0">"smtp"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
transport.<span class="me1">connect</span><span class="br0">(</span>host, from, pass<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
transport.<span class="me1">sendMessage</span><span class="br0">(</span>message, message.<span class="me1">getAllRecipients</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
transport.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
@SuppressWarnings<span class="br0">(</span><span class="st0">"rawtypes"</span><span class="br0">)</span><br />
|
||||
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
BasicConfigurator.<span class="me1">configure</span><span class="br0">(</span><span class="kw1">new</span> ConsoleAppender<span class="br0">(</span><span class="kw1">new</span> PatternLayout<span class="br0">(</span><span class="st0">"%d{ISO8601} - %m%n"</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"Starting CallerIdClient version 1.1.2"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
JSAP jsap <span class="sy0">=</span> <span class="kw1">new</span> JSAP<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">try</span> <span class="br0">{</span><br />
|
||||
UnflaggedOption routerPassword <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"router password"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span><br />
|
||||
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
routerPassword.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the login password for the Speedport W 723V (A) router"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>routerPassword<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
UnflaggedOption updateInterval <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"update interval"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">INTEGER_PARSER</span><span class="br0">)</span><br />
|
||||
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
updateInterval.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the interval beetween runs in minutes"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>updateInterval<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
UnflaggedOption fromAddress <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span>.<span class="me1">setRequired</span><span class="br0">(</span><br />
|
||||
<span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
fromAddress.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"Google mail address to send from"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>fromAddress<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
UnflaggedOption emailPassword <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span><br />
|
||||
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
emailPassword.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the login password for the Google account"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>emailPassword<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
UnflaggedOption recipients <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"recipient"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span>.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><br />
|
||||
.<span class="me1">setGreedy</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
recipients.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"e-mail addresses to send notifications to"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>recipients<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">Switch</span> contactsSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"check contacts"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"contacts"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
contactsSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"retrieve contacts from Google account and resolve caller names"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>contactsSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">Switch</span> debugSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
debugSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"print debug messages"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>debugSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">Switch</span> helpSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span>.<span class="me1">setShortFlag</span><span class="br0">(</span><span class="st0">'?'</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
helpSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"print help and exit"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>helpSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="br0">}</span> <span class="kw1">catch</span> <span class="br0">(</span>JSAPException e<span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">fatal</span><span class="br0">(</span>e.<span class="me1">getMessage</span><span class="br0">(</span><span class="br0">)</span>, e<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">exit</span><span class="br0">(</span><span class="sy0">-</span><span class="nu0">1001</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
JSAPResult config <span class="sy0">=</span> jsap.<span class="me1">parse</span><span class="br0">(</span>args<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span>config.<span class="me1">success</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">||</span> config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
<span class="kw1">for</span> <span class="br0">(</span>java.<span class="me1">util</span>.<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+iterator"><span class="kw3">Iterator</span></a> errs <span class="sy0">=</span> config.<span class="me1">getErrorMessageIterator</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> errs.<span class="me1">hasNext</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">"Error: "</span> <span class="sy0">+</span> errs.<span class="me1">next</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">"Usage: java -jar speedportcallerid.jar "</span> <span class="sy0">+</span> jsap.<span class="me1">getUsage</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">"<span class="es0">\n</span><span class="es0">\n</span>"</span> <span class="sy0">+</span> jsap.<span class="me1">getHelp</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">exit</span><span class="br0">(</span><span class="sy0">-</span><span class="nu0">1002</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<br />
|
||||
<span class="kw1">if</span> <span class="br0">(</span>config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">setLevel</span><span class="br0">(</span>Level.<span class="me1">DEBUG</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
||||
log.<span class="me1">setLevel</span><span class="br0">(</span>Level.<span class="me1">INFO</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"Log level set to "</span> <span class="sy0">+</span> log.<span class="me1">getLevel</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<br />
|
||||
<span class="kw1">new</span> CallerIdClient<span class="br0">(</span>config<span class="br0">)</span><span class="sy0">;</span><br />
|
||||
<span class="br0">}</span><br />
|
||||
<span class="br0">}</span></div></div>
|
||||
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="File" title="application/java-archive" src="../../modules/file/icons/application-octet-stream.png" /> <a href="../../sites/siarp.de/files/speedportcallerid.jar" type="application/java-archive; length=3143313" title="speedportcallerid.jar">speedportcallerid.jar</a></span></td><td>3 MB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/232 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:15 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,130 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/40 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:32 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>SVN Migration | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"dMePVfp63tVGfWq1o_--rvUHD2TLdqkPK06al_oCpEE","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-40 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">SVN Migration</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-40" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">2. June 2006 - 1:45 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Migration von BerkeleyDB nach FSFS sollte ganz leicht sein.</p>
|
||||
<p>Man kann einen Dump exportieren. Das ist eine menschenlesbare Datei, die man für heftige Änderungen auch bearbeiten kann. Tolle Sache das, damit gehen auch so Sachen, wie Zusammenlegung von zwei Repositories etc. Noch besser: <a href="http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate">LIES ES NACH</a>. In der wie immer hervorragenden Doku.</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-13"></a>
|
||||
<div class="comment comment-by-node-author odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">2. June 2006 - 1:46 — <span class="username">Martin</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/13/#comment-13" class="permalink" rel="bookmark">Ich liebe uns...</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Ich liebe Subversion! Wirklich!</p></div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/40 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:34 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,208 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/42 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:30 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Mein erstes echtes bash-Skript! | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"WjXjazS24PLzXIdmvgH_grWbRP-5LCTOo1KP2Iy5xXk","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-42 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Mein erstes echtes bash-Skript!</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-42" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">4. June 2006 - 13:15 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>...erstellt ein Repository und liegt unter <span style="font-style:italic">/root/tilman/create_repository.sh</span>. Nächstes Ziel: Subversion hook script für automatisiertes Update, damit die Webentwicklung so richtig losgehen kann.<br />
|
||||
<!--break--><br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">#!/bin/sh<br />
|
||||
<br />
|
||||
# Erstellt ein Repository unterhalb von /home/svn-repos,<br />
|
||||
# traegt es in die httpd.conf ein und startet Apache neu<br />
|
||||
#<br />
|
||||
# Optionen: -n um den Eintrag in die httpd.conf und den Apache-Neustart<br />
|
||||
# abzuschalten<br />
|
||||
# Parameter: Pfad des neuen Repository (unterhalb von /home/svn-repos/)<br />
|
||||
<br />
|
||||
if [ $# -eq 2 ]<br />
|
||||
then<br />
|
||||
if [ $1 == "-n" ]<br />
|
||||
then<br />
|
||||
# Slashes am Anfang und Ende der Pfadangabe entfernen<br />
|
||||
repos=${2%\/}<br />
|
||||
repos=${repos#\/}<br />
|
||||
updateconf=false<br />
|
||||
else<br />
|
||||
echo "usage: create_repository [-n] repository_path"<br />
|
||||
exit 1<br />
|
||||
fi<br />
|
||||
else<br />
|
||||
if [ $# -eq 1 ]<br />
|
||||
then<br />
|
||||
# Slashes am Anfang und Ende der Pfadangabe entfernen<br />
|
||||
repos=${1%\/}<br />
|
||||
repos=${repos#\/}<br />
|
||||
updateconf=true<br />
|
||||
else<br />
|
||||
echo "usage: create_repository [-n] repository_path"<br />
|
||||
exit 2<br />
|
||||
fi<br />
|
||||
fi<br />
|
||||
<br />
|
||||
mkdir /home/svn-repos/$repos<br />
|
||||
svnadmin create /home/svn-repos/$repos<br />
|
||||
chown -R svn.svn /home/svn-repos/$repos<br />
|
||||
chmod -R ug+w /home/svn-repos/$repos<br />
|
||||
chmod ug+s /home/svn-repos/$repos /home/svn-repos/$repos/*<br />
|
||||
<br />
|
||||
# in httpd.conf eintragen und Apache neu starten<br />
|
||||
if [ $updateconf = true ]<br />
|
||||
then<br />
|
||||
echo "<br />
|
||||
<Location /svn/$repos><br />
|
||||
DAV svn<br />
|
||||
SVNPath /home/svn-repos/$repos<br />
|
||||
SVNIndexXSLT \"/subversion-xslt/svnindex.xsl\"<br />
|
||||
AuthType Basic<br />
|
||||
AuthName \"siarp.de repository\"<br />
|
||||
AuthUserFile /home/svn-repos/svn-auth-file<br />
|
||||
Require user martin tilman<br />
|
||||
SSLRequireSSL<br />
|
||||
</Location><br />
|
||||
" >> /usr/local/apache2/conf/httpd.conf<br />
|
||||
<br />
|
||||
/usr/local/apache2/bin/apachectl restart<br />
|
||||
fi</div></div><br />
|
||||
</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div id="comments" class="comment-wrapper">
|
||||
<h2 class="title">Comments</h2>
|
||||
|
||||
<a id="comment-14"></a>
|
||||
<div class="comment odd">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">4. June 2006 - 20:30 — <span class="username">Martin</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/14/#comment-14" class="permalink" rel="bookmark">0.2?</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p><span class="geshifilter"><code class="text geshifilter-text">/usr/local/apache2/bin/apachectl restart</code></span></p>
|
||||
|
||||
<p>Was macht denn <span class="geshifilter"><code class="text geshifilter-text">chmod ug+s /home/svn-repos/$repos /home/svn-repos/$repos/*</code></span> und warum geht das nicht rekursiv?</p></div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
<div class="indented"><a id="comment-15"></a>
|
||||
<div class="comment comment-by-node-author even">
|
||||
|
||||
<div class="clearfix">
|
||||
|
||||
<span class="submitted">4. June 2006 - 20:35 — <span class="username">Tilman</span></span>
|
||||
|
||||
|
||||
|
||||
<h3><a href="../../comment/15/#comment-15" class="permalink" rel="bookmark">Schnelle Antwort</a></h3>
|
||||
|
||||
<div class="content">
|
||||
<div class="field field-name-comment-body field-type-text-long field-label-hidden"><div class="field-items"><div class="field-item even"><p>Also eigentlich habe ich diese drei Zeilen mit den Rechten aus einer c't und benutze sie immer, ohne sie zu hinterfragen...</p></div></div></div> </div>
|
||||
</div>
|
||||
|
||||
<ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/42 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:32 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,123 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/47 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:30 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Sandkastenspiele I - Automatisches "svn update" | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"JLQspPk2q_PJMlrFzvYI2rhgaDRKmheges1csE0RbdA","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-47 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Sandkastenspiele I - Automatisches "svn update"</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-47" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">8. June 2006 - 14:26 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Ich habe ein Repository <span style="font-style:italic">tests</span>, in dem sich ein Verzeichnis <span style="font-style:italic">automaticupdate/website</span> befindet, das bei jedem Commit automatisch ins <span style="font-style:italic">htdocs</span>-Verzeichnis ausgecheckt werden soll.</p>
|
||||
|
||||
<p>Dazu erstelle ich ein Verzeichnis <span style="font-style:italic">htdocs/tests</span> und übertrage es an Benutzer <span style="font-style:italic">svn</span>.<br />
|
||||
Danach wird manuell der 'initial checkout' durchgeführt:<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">su svn<br />
|
||||
cd /usr/local/apache2/htdocs/tests<br />
|
||||
svn checkout file:///home/svn-repos/tilman/tests/automaticupdate/website<br />
|
||||
exit</div></div></p>
|
||||
|
||||
<p>Für die automatischen Updates wird jetzt noch ein hook-Skript geschrieben. Es heißt <span style="font-style:italic">post-commit</span>, gehört selbstverständlich dem Benutzer <span style="font-style:italic">svn</span>, ist ausführbar und liegt im Unterverzeichnis <span style="font-style:italic">/hooks</span> des Repository. (Da sind auch schon templates für die verschiedenen möglichen hooks.)<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">#!/bin/sh<br />
|
||||
svn update /usr/local/apache2/htdocs/tests/website</div></div></p>
|
||||
|
||||
<p>Jetzt wird der aktuelle Stand immer unter <a href="http://www.siarp.de/tests/website/" rel="nofollow">http://www.siarp.de/tests/website/</a> angezeigt.</p>
|
||||
|
||||
<p><span style="font-weight:bold">Nächster Schritt:</span> Kleinere Veränderungen auf den Server zum Testen übertragen, ohne gleich einen Commit machen zu müssen. (Wie?)</p>
|
||||
|
||||
<p>Es wäre außerdem noch schön, Apache grundsätzlich die Auslieferung von allem, was ein ".svn" im Pfad hat zu verbieten. Derzeit sind die Metadaten noch <a href="http://www.siarp.de/tests/website/.svn/" class="bb-url" rel="nofollow">einsehbar</a>.</p></div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/47 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:30 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,154 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/60 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:27 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Subdomains | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"XCFvNb-1HkRsshb8IUNJP9JhbskWoZINdjfrd_qJGIg","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-60 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Subdomains</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-60" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">19. October 2006 - 20:04 — <span class="username">Tilman</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Problem: Normale Zertifikate gelten nur für eine (Sub-)Domain<br />
|
||||
Erkenntnis: Es gibt auch Wildcard-Zertifikate, die alle Subdomains abdecken<br />
|
||||
Folgefrage: Bekommt man diese Wildcardzertifikate von einer halbwegs anerkannten CA ohne kosten?</p>
|
||||
|
||||
<p>Allgemein zum Thema pro/contra Subdomains:<br />
|
||||
+ sie sehen hübsch aus<br />
|
||||
- wirklich sinnvoll eingesetzt sind sie nur, wenn sie auf verschiedene Recher bzw. IPs zeigen, was sie bei uns nicht tun<br />
|
||||
- uns fällt kein Service ein, für den eine Subdomain wirklich nötig wäre.</p>
|
||||
|
||||
<p>Die Entscheidung: Es sollen alle Dienste ohne Subdomain unter <a href="protokoll://siarp.de" rel="nofollow">protokoll://siarp.de</a> erreichbar sein.<br />
|
||||
<!--break--><br />
|
||||
Subdomains werde höchstens als Kurz-URL mit Weiterleitung genutzt. Dazu müssen sie über das KIS von Hosteurope angelegt werden und zwar unter<br />
|
||||
<div class="geshifilter"><div class="text geshifilter-text">Administration > Domainservices > Administration > AutoDNS Domains bearbeiten</div></div></p>
|
||||
|
||||
<p>Im Apache gibt es den einen wichtigen Virtual Host für siarp.de. Alle weiteren Hosts enthalten Redirects auf siarp.de/PFAD:</p>
|
||||
|
||||
<p><div class="geshifilter"><div class="text geshifilter-text">NameVirtualHost *:80<br />
|
||||
<br />
|
||||
<VirtualHost *:80><br />
|
||||
ServerName siarp.de<br />
|
||||
DocumentRoot /usr/local/apache2/htdocs<br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
<VirtualHost *:80><br />
|
||||
ServerName <a href="<a href="http://www.siarp.de"/">http://www.siarp.de"</a> rel="nofollow"><a href="http://www.siarp.de</a>">www.siarp.de</a></a><br />
|
||||
Redirect / <a href="<a href="../../">http://siarp.de/</a><br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
<VirtualHost" rel="nofollow"><a href="../../">http://siarp.de/</a><br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
<VirtualHost</a> *:80><br />
|
||||
ServerName SUBDOMAIN.siarp.de<br />
|
||||
Redirect / <a href="<a href="../../PFAD/index/">http://siarp.de/PFAD/</a><br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
...<br />
|
||||
" rel="nofollow"><a href="../../PFAD/index/">http://siarp.de/PFAD/</a><br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
...<br />
|
||||
</a></div></div></p></div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
||||
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
||||
<tbody>
|
||||
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Image icon" title="image/gif" src="../../modules/file/icons/image-x-generic.png" /> <a href="../../sites/siarp.de/files/subdomains/" type="image/gif; length=9666" title="subdomains.gif">subdomains.gif</a></span></td><td>9.44 KB</td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/60 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:30 GMT -->
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
||||
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
||||
|
||||
|
||||
<!-- Mirrored from siarp.de/node/8 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:40 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
||||
<link rel="canonical" href="index.html" />
|
||||
<link rel="shortlink" href="index.html" />
|
||||
<title>Erste Apache-Konfiguration | siarp.de</title>
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
||||
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
||||
|
||||
<!--[if lt IE 7]>
|
||||
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
||||
<![endif]-->
|
||||
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--//--><![CDATA[//><!--
|
||||
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"Sq-Vu6hTi_s7VLm9PgOqbSJGA5h-nw-kgBecHl1d6X0","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
||||
//--><!]]>
|
||||
</script>
|
||||
</head>
|
||||
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-8 node-type-story fluid-width" >
|
||||
<div id="skip-link">
|
||||
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
||||
</div>
|
||||
|
||||
<div id="wrapper">
|
||||
<div id="container" class="clearfix">
|
||||
|
||||
<div id="header">
|
||||
<div id="logo-floater">
|
||||
<div id="branding"><strong><a href="../../">
|
||||
<span>siarp.de</span> </a></strong></div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#header -->
|
||||
|
||||
|
||||
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
||||
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
||||
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Erste Apache-Konfiguration</h1>
|
||||
</div> <div class="clearfix">
|
||||
<div class="region region-content">
|
||||
<div id="block-system-main" class="block block-system clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<div id="node-8" class="node node-story node-promoted">
|
||||
|
||||
|
||||
|
||||
<span class="submitted">29. December 2005 - 0:05 — <span class="username">Martin</span></span>
|
||||
|
||||
<div class="content clearfix">
|
||||
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>"SIARP.de" - ich sehe meinen Namen in Leuchtbuchstaben...</p>
|
||||
|
||||
<p>Wir fassten den Entschluss, die aufgefächerte Konfiguration zu einer handlichen kleinen httpd.conf zusammenzuführen. Ein Backup der (fast) originalen Konfigurationdateien befindet sich in /home/root/bak/apache2.tar.gz. Dann haben wir festgestellt, dass es zwingend das Verzeichnis samt Dateien sysconfig.d erfordert. Also die betreffenden Teile wieder ausgelagert und TADA! - "SIARP.de".</p>
|
||||
</div></div></div> </div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
||||
</ul></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="region region-footer">
|
||||
<div id="block-block-3" class="block block-block clearfix">
|
||||
|
||||
|
||||
<div class="content">
|
||||
<p>Alle Rechte liegen bei siarp.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
||||
|
||||
<div id="sidebar-second" class="sidebar">
|
||||
<div class="region region-sidebar-second">
|
||||
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
||||
|
||||
<h2 class="title">Written by</h2>
|
||||
|
||||
<div class="content">
|
||||
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
||||
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
||||
</ul> </div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- /#container -->
|
||||
</div> <!-- /#wrapper -->
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from siarp.de/node/8 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:01:40 GMT -->
|
||||
</html>
|
||||
Reference in New Issue
Block a user