diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-12-22 09:16:08 +0100 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-12-22 09:16:08 +0100 |
commit | 5697f7c92cbc7b2c23d2a8c6ba3d904734dd0739 (patch) | |
tree | d9c7d8cf5b7a42d505ceb06d63a9e00fa212daf8 /vendor/fguillot/picofeed/tests/fixtures | |
parent | d2d16c4c26f8f9a7ee97350e5cba5c3554c51013 (diff) |
udpate picofeed
Diffstat (limited to 'vendor/fguillot/picofeed/tests/fixtures')
-rw-r--r-- | vendor/fguillot/picofeed/tests/fixtures/hamakor.xml | 527 |
1 files changed, 527 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed/tests/fixtures/hamakor.xml b/vendor/fguillot/picofeed/tests/fixtures/hamakor.xml new file mode 100644 index 000000000..29d49f58b --- /dev/null +++ b/vendor/fguillot/picofeed/tests/fixtures/hamakor.xml @@ -0,0 +1,527 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<feed xmlns="http://www.w3.org/2005/Atom"> + + <title>פלאנט תוכנה חופשית בישראל (Planet FOSS-IL)</title> + <link rel="self" href="http://planet.hamakor.org.il/atom.xml"/> + <link href="http://planet.hamakor.org.il"/> + <id>http://planet.hamakor.org.il/atom.xml</id> + <updated>2014-12-22T02:31:42+00:00</updated> + <generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator> + + <entry xml:lang="he"> + <title type="html">סינטרה מודולרית</title> + <link href="http://idkn.wordpress.com/2014/12/20/modular-sinatra/"/> + <id>http://idkn.wordpress.com/?p=7223</id> + <updated>2014-12-20T20:00:02+00:00</updated> + <content type="html"><p>ב2012 ניסיתי ליצור פוסטים בנושא של <a href="http://idkn.wordpress.com/2012/11/19/advanced-usage-in-sinatra-first-part/">כיצד ניתן להגיע למצב הדומה לrails עם סינטרה</a>.<br /> +בשל חוסר סבלנות וזמן, זנחתי את הפוסט, אבל לא את הרעיון לבצע אותו.<br /> +למעשה זה היה רעיון טוב מאוד לזנוח אותו בזמנו, היות ואז הייתי עושה דברים לא נכון, וכיום יש לי יותר ידע וניסיון בנושא, וגם איך לעבוד נכון יותר, וכן גם גרסת הרובי מאפשרת לנו לעבוד קל יותר.</p> +<p>באותו הזמן של הרצון לחזור ולכתוב על הנושא, מצאתי את עצמי זקוק בדחיפות למערכת שתסייע לי לדבג API שאני יוצר בפרוייקט שמתבצע באמצעות REST, אז החלטתי לצרף שני צרכים עם דבר אחד.</p> +<p>הרעיון שלי הוא למעשה שרת אשר משמש לקוח בדיקות עבור REST, כך שאפשר להתקין אותו על שרת כלשהו בארגון וכולם יכולים להשתמש בו, במקום תוכנה מקומית על המחשב.</p> +<p>הקוד שלי די ממוקד לרובי 2.1 (אני מקווה כי גם מעלה, 2.2 נראה שיתמוך בקוד שלי), ופחות מזה, יצעק לכם על מספר דברים, אשר בקלות ניתן לפתור, אך ראו הוזהרתם.</p> +<p><a href="https://github.com/ik5/ruby_rest_wui">התחלתי ליצור את הפרוייקט</a>, והוא עובד עם סינטרה, ומחזיק נכון לכתיבת הפוסט שלוש מחלקות שונות בשביל ביצוע routing.<br /> +בנוסף, יצרתי לעצמי מבנה ספריות המתאימות למה שאני רוצה לבצע, לפי לוגיקה, כך שהלוגיקה השייכת לממשק, <a href="https://github.com/ik5/ruby_rest_wui/tree/master/logic">נמצאת כאן</a>, בעוד ש<a href="https://github.com/ik5/ruby_rest_wui/tree/master/config">ההגדרות בכלל נמצאות כאן</a>.</p> +<p><a href="http://rack.github.io/">אנחנו משתמשים בRack</a> בעצם, היות וכמעט וכל הframeworks עבור בניית מערכות web ברובי משתמשים בו, אנו זקוקים לקובץ קבוע בשם <a href="https://github.com/ik5/ruby_rest_wui/blob/master/config.ru">config.ru</a>.</p> +<p>הקובץ הזה, בעצם אחראי על התחלת השרת, וטעינה של המערכת שלנו, כאשר הוא תומך בטעינה של יותר ממערכת אחת בו זמנית, כולל שני framework או יותר, אך נכון לגרסה הנוכחית, אני משתמש בו רק עבור Sinatra.</p> +<p>אני משתמש גם ב <a href="http://bundler.io/">Bundler</a> לניהול תלויות, אשר מאפשר לנו גם לדאוג לצעוק על דברים שלא נטענו, ובעיקר עושה לנו סדר של גרסאות של תלויות, ובכך שדברים לא יתנגשו אחד בשני.</p> +<p>לאחר טעינת התלויות, אני טוען קובץ בודד בשם app.rb שהוא בעצם מה שמנהל את האפליקציה שלי. אך במקום להשתמש ב <a href="http://ruby-doc.org/core-2.1.5/Kernel.html#method-i-require">require</a> &quot;רגיל&quot;, אני משתמש בפונקציה בשם <a href="http://ruby-doc.org/core-2.1.5/Kernel.html#method-i-require_relative">require_relative</a>, אשר מאפשרת לטעון דברים מהמיקום הנוכחי של הקובץ המנסה לטעון אותה.</p> +<p>כל הקסם של ניהול מספר מחלקות, נעוץ אצלי ב <a href="https://github.com/ik5/ruby_rest_wui/blob/master/logic/app.rb">app.rb</a>.<br /> +אני יצרתי אותו שיהיה מאוד פשוט &#8211; טען לי את המחלקות האחרון והכנס אותן לסביבת העבודה של רובי, על ידי שימוש ב <a href="https://github.com/sinatra/sinatra/blob/v1.4.5/lib/sinatra/base.rb#L1406">use</a>.</p> +<p>למערכת שיצרתי ישנם שני מצבים &#8211; מערכת לדיבוג REST, ומערכת &quot;בדיקות&quot; אשר עליה אפשר לבדוק שדברים עובדים, והיא בעיקר על תקן &quot;echo&quot; כלשהו.</p> +<p>את המערכת של יצירת המסכים, ושליחת ה REST, יצרתי בקובץ <a href="https://github.com/ik5/ruby_rest_wui/blob/master/logic/rest.rb">rest.rb</a>, והכל מאוגד שם.<br /> +יש שם משהו שהולך לעבור למקום אחר בקרוב, וזה מספר מתודות לסיוע בפעולות.</p> +<p>הקובץ לביצוע הבדיקות, קיבל את השם <a href="https://github.com/ik5/ruby_rest_wui/blob/master/logic/testing.rb">tests.rb</a>, והוא מי שמנהל את כל הניתובים בנושא.<br /> +הגרסה הבאה, הולכת לגרום לו להיות גנרי יותר, מצד אחד, וגמיש יותר מצד שני, ובכך הכוח של סינטרה יכנס ממש לפעולה, עם ניתובים ממש דינאמיים וחכמים.</p> +<p>Sinatra תומך במשהו אשר קיבל את השם <a href="http://www.sinatrarb.com/intro.html#Helpers">Helpers</a>, וזה מתודות אשר מסייעות לנו לבצע דברים, בצורה שלא נהיה צריכים לחזור עליה כל פעם, וזה זמין גם ל view שלנו, ובגרסה הבאה שאשחרר (נכון לכתיבת הפוסט), המידע יעבור לקובץ בשם helpers.rb ואיתו עובדים קצת שונה ברובי.</p> +<p>כל מחלקה של סינטרה, מחזיקה חלק של <a href="http://www.sinatrarb.com/intro.html#Configuration">configure</a> משל עצמה, שזה טוב ורע באותו הזמן. זה טוב, כי זה מספק גמישות, אבל זה רע, כי לפעמים יש לנו קצת חזרה על עצמנו.</p> +<p>במקרה הזה, הגדרתי כי במצב של :development משתמשים ב <a href="http://www.sinatrarb.com/contrib/reloader.html">Sinatra::Reloader</a>, אשר מגיע עם <a href="http://www.sinatrarb.com/contrib/reloader.html">Sinatra-Contrib</a> &#8211; תת פרוייקט המספק הרבה כלי עזר לדברים שונים.<br /> +הסיבה לשימוש ב Reloader הוא לא לאתחל את השרת בכל שינוי שעושים למחלקה של סינטרה, כאשר Reloader מגלה כי התוכן של הקובץ השתנה, הוא גורם ל rack לטעון אותו שוב, וככה אנחנו לא זקוקים לטעינה מחודשת של השרת עצמו.</p> +<p>המערכת שכתבתי, משתמשת ב template בשם <a href="http://haml.info/">haml</a>, למעשה פעם ראשונה אשר אני משתמש בה מרצון. תוכלו למצוא את ה <a href="https://github.com/ik5/ruby_rest_wui/blob/master/views/layout.haml">layout.haml</a> שהוא המסגרת הרגילה וכן כרגע קובץ בשם <a href="https://github.com/ik5/ruby_rest_wui/blob/master/views/index.haml">index.haml</a> תחת ספריית <a href="https://github.com/ik5/ruby_rest_wui/tree/master/views">view</a>.<br /> +ועבור העיצוב, אני משתמש ב <a href="http://foundation.zurb.com/">Foundation 5</a>, אשר אני אוהב אותה יותר מאשר bootstrap.<br /> +עבור Javascript יש גם את jQuery וגם את <a href="http://idkn.wordpress.com/2014/11/04/knockout-js/">knockout.js</a>, כאשר אני נעזר גם ב <a href="https://lodash.com/">lodash.js</a> למספר דברים פשוטים, והיא מספקת בעצם גרסה שעברה אופטימיזציה ל underscore.</p> +<p>את הקבצים של Foundation, וכל ה Javascript ניתן למצוא תחת <a href="https://github.com/ik5/ruby_rest_wui/tree/master/public">public</a>.</p> +<p>דבר אחרון שנשאר לספר עליו הוא שאני משתמש במשהו אשר נקרא <a href="http://puma.io/">puma</a>.<br /> +מה זה ?<br /> +puma הוא משהו שלוקח את rack וגורם לו להיות שרת לכל דבר ועניין, אשר ניתן לבצע עליו חיבור לשרתי HTTP שונים, כדוגמץ apache או nginx.<br /> +החיבור נעשה על ידי הגדרת proxy בשרתים.</p> +<p>ההגדרות של puma, נמצאות תחת config, וכפי שניתן לראות את <a href="https://github.com/ik5/ruby_rest_wui/blob/master/config/puma.rb">הקובץ הראשי והחשוב</a>, הוא גם יודע לבנות לעצמו מבנה ספריות במידה והן לא קיימות, דבר שהוספתי לקוד עצמו. הוא כרגע מכוון למצב של development, ולכן יש לשנות קצת הגדרות בשביל שזה יעבור למצב production.</p> +<p>אתם מוזמנים לבצע fork, לשחק עם הקוד וגם להחזיק לי תיקונים ותוספות.</p><br />תויק תחת:<a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/%d7%a4%d7%99%d7%aa%d7%95%d7%97/ruby/">Ruby</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/ui/">ui</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/operating-systems/unix/">unix</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%a7%d7%a9%d7%95%d7%a8%d7%aa/%d7%90%d7%99%d7%a0%d7%98%d7%a8%d7%a0%d7%98/">אינטרנט</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%99%d7%a4%d7%99%d7%9d-%d7%95%d7%98%d7%a8%d7%99%d7%a7%d7%99%d7%9d/">טיפים וטריקים</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/">טכנולוגיה</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/operating-systems/%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/">לינוקס</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/%d7%a4%d7%99%d7%aa%d7%95%d7%97/">פיתוח</a>, <a href="http://idkn.wordpress.com/category/%d7%a7%d7%95%d7%93-%d7%a4%d7%aa%d7%95%d7%97/">קוד פתוח</a>, <a href="http://idkn.wordpress.com/category/%d7%a8%d7%a9%d7%aa%d7%95%d7%aa/">רשתות</a>, <a href="http://idkn.wordpress.com/category/%d7%a9%d7%a8%d7%aa%d7%99%d7%9d/">שרתים</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/">תוכנה</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%95%d7%9b%d7%a0%d7%94/%d7%aa%d7%9b%d7%a0%d7%95%d7%aa/">תכנות</a>, <a href="http://idkn.wordpress.com/category/%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%94/%d7%aa%d7%a7%d7%a9%d7%95%d7%a8%d7%aa/">תקשורת</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/idkn.wordpress.com/7223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/idkn.wordpress.com/7223/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=idkn.wordpress.com&#038;blog=3104636&#038;post=7223&#038;subd=idkn&#038;ref=&#038;feed=1" width="1" height="1" /></content> + <author> + <name>ik_5</name> + <uri>http://idkn.wordpress.com</uri> + </author> + <source> + <title type="html">לראות שונה » קוד פתוח</title> + <subtitle type="html">מבט שונה בעיקר על (פיתוח) תוכנה, עסקים והקוד הפתוח</subtitle> + <link rel="self" href="http://idkn.wordpress.com/category/%d7%a7%d7%95%d7%93-%d7%a4%d7%aa%d7%95%d7%97/feed/atom/"/> + <id>http://idkn.wordpress.com/feed/atom/</id> + <updated>2014-12-22T02:31:34+00:00</updated> + </source> + </entry> + + <entry xml:lang="en-US"> + <title type="html">Kindle Paperwhite &#8220;Unable to Open Item&#8221;</title> + <link href="http://www.guyrutenberg.com/2014/12/20/kindle-paperwhite-unable-to-open-item/"/> + <id>http://www.guyrutenberg.com/?p=69803</id> + <updated>2014-12-20T14:40:04+00:00</updated> + <content type="html"><p>Recently, I tried transfering some new ebook to my Kindle Paperwhite (first generation), the books were listed properly. However, when I tried to open them I got<br /> +&#8220;Unable to Open Item&#8221; error, suggesting I re-download the books from Amazon. I tried transferring the files again and again, but it didnt&#8217; help. Some of the books were <code>mobi</code> files while others were &#8220;AZW` (which I got from <a href="http://indiebook.co.il/">אינדיבוק</a>) and all of them opened fine on my computer.</p> +<p>Finally, I followed an advice from a <a href="http://kindledfans.livejournal.com/71655.html?thread=388839#t388839">comment in the KindledFans blog</a>, and converted the files to <code>AZW3</code> (the original comment suggested <code>mobi</code> but <code>AZW3</code> works better with Hebrew). After converting, I moved the files to my Kindle and they opened just fine.</p></content> + <author> + <name>Guy</name> + <uri>http://www.guyrutenberg.com</uri> + </author> + <source> + <title type="html">Guy Rutenberg</title> + <subtitle type="html">Keeping track of what I do</subtitle> + <link rel="self" href="http://www.guyrutenberg.com/feed/atom/"/> + <id>http://www.guyrutenberg.com/feed/atom/</id> + <updated>2014-12-20T18:48:18+00:00</updated> + </source> + </entry> + + <entry xml:lang="he-IL"> + <title type="html">Docker – חלק חמישי</title> + <link href="http://ilsh.info/archives/4571"/> + <id>http://ilsh.info/?p=4571</id> + <updated>2014-12-19T11:00:31+00:00</updated> + <content type="html"><p><a href="http://ilsh.info/archives/4487">בפרק הקודם</a> הדגמתי הרצת שתי פקודות במיכל (באמצעות הפקודה docker run): האחת איפשרה גישה אינטרקטיבית לעבודה עם המיכל ובשניה הרצנו Daemon שסיפק שירות.</p> +<p>כרגע אתמקד בעבודה עם docker client. עבודה עם docker client מאוד פשוטה (באמצעות דגלים וארגומנטים ניתן לשלוט בהוראות ל- Docker Client):</p> +<div class="codesnip-container"> +<div class="sql codesnip">Usage: &nbsp;<span class="br0">&#91;</span>sudo<span class="br0">&#93;</span> docker <span class="br0">&#91;</span>command<span class="br0">&#93;</span> <span class="br0">&#91;</span>flags<span class="br0">&#93;</span> <span class="br0">&#91;</span>arguments<span class="br0">&#93;</span> <span class="sy0">..</span></div> +</div> +<p><span id="more-4571"></span></p> +<p>הרצת הפקודה docker version תספק לנו אינפורמציה נוספת על גרסת docker בצד השרת ובצד הלקוח (בצד אינפורמציה רבה נוספת).</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker version<br /> +<span class="br0">&#91;</span>sudo<span class="br0">&#93;</span> password <span class="kw1">FOR</span> ilan: <br /> +Client version: 1<span class="sy0">.</span>3<span class="sy0">.</span>2<br /> +Client API version: <span class="nu0">1.15</span><br /> +Go version <span class="br0">&#40;</span>client<span class="br0">&#41;</span>: go1<span class="sy0">.</span>3<span class="sy0">.</span>3<br /> +Git commit <span class="br0">&#40;</span>client<span class="br0">&#41;</span>: 39fa2fa<br /> +OS<span class="sy0">/</span>Arch <span class="br0">&#40;</span>client<span class="br0">&#41;</span>: linux<span class="sy0">/</span>amd64<br /> +Server version: 1<span class="sy0">.</span>3<span class="sy0">.</span>2<br /> +Server API version: <span class="nu0">1.15</span><br /> +Go version <span class="br0">&#40;</span>server<span class="br0">&#41;</span>: go1<span class="sy0">.</span>3<span class="sy0">.</span>3<br /> +Git commit <span class="br0">&#40;</span>server<span class="br0">&#41;</span>: 39fa2fa</div> +</div> +<p><br /> +<br /> +כדי לקבל עזרה על פקודה מסויימת (נניח attach) נוסיף את הדגל help:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker attach <span class="co1">&#8211;help</span></div></div> +<p>Usage: docker attach <span class="br0">&#91;</span>OPTIONS<span class="br0">&#93;</span> CONTAINER</p> +<p>Attach <span class="kw1">TO</span> a running container</p> +<p>&nbsp; <span class="co1">&#8211;no-stdin=false &nbsp; &nbsp;Do not attach STDIN</span><br /> +&nbsp; <span class="co1">&#8211;sig-proxy=true &nbsp; &nbsp;Proxy all received signals to the process (even in non-TTY mode). SIGCHLD, SIGKILL, and SIGSTOP are not proxied.</span></p> + +<p><strong>הערה</strong>: כדי לצפות בכל באפשרויות שהפקודה docker תומכת יש להריץ את הפקודה docker בלבד.<br /> +<br /></p> +<p><strong>הרצת אפליקציית רשת באמצעות docker</strong>:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker run <span class="sy0">-</span>d <span class="sy0">-</span>P training<span class="sy0">/</span>webapp python app<span class="sy0">.</span>py<br /> +Unable <span class="kw1">TO</span> find image <span class="st0">'training/webapp'</span> locally<br /> +Pulling repository training<span class="sy0">/</span>webapp<br /> +31fa814ba25a: Download complete <br /> +511136ea3c5a: Download complete <br /> +f10ebce2c0e1: Download complete <br /> +82cdea7ab5b5: Download complete <br /> +5dbd9cb5a02f: Download complete <br /> +74fe38d11401: Download complete <br /> +64523f641a05: Download complete <br /> +0e2afc9aad6e: Download complete <br /> +e8fc7643ceb1: Download complete <br /> +733b0e3dbcee: Download complete <br /> +a1feb043c441: Download complete <br /> +e12923494f6a: Download complete <br /> +a15f98c46748: Download complete <br /> +<span class="kw1">STATUS</span>: Downloaded newer image <span class="kw1">FOR</span> training<span class="sy0">/</span>webapp:latest<br /> +52d212d850c52cf8553f729ecc0850647d1bb50f274f6ef9316ea19b3d3b7fe5</div> +</div> +<ul> +<li>הדגל d- מוכר: האפליקציה במיכל תורץ ברקע ותספק את השירות</li> +<li>הדגל p- מציין שיש למפות כל פורט נדרש במיכל ולשייך אותו למיכל הנוכחי</li> +<li>מאחר שהמיכל 'training/webapp' לא נמצא במאגר המקומי, הוא הורד מהרשת (Docker Hub). המיכל מכיל סקריפט פייתון פשוט (app.py) שמיישם אפליקצית רשת.</li> +</ul> +<p><br /> +<br /> +נריץ שוב את הפקודה docker ps (הפעם עם הדגל l- בו נבקש לקבל מידע נוסף על זמן הרצת הסקריפט)</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker ps <span class="sy0">-</span>l<br /> +CONTAINER ID &nbsp;IMAGE &nbsp;COMMAND &nbsp;CREATED &nbsp;<span class="kw1">STATUS</span> &nbsp; PORTS NAMES 2d212d850c5 &nbsp;training<span class="sy0">/</span>webapp:latest &nbsp;<span class="st0">&quot;python app.py&quot;</span> &nbsp;<span class="nu0">11</span> minutes ago &nbsp; Up <span class="nu0">11</span> minutes &nbsp;0<span class="sy0">.</span>0<span class="sy0">.</span>0<span class="sy0">.</span>0:<span class="nu0">49153</span><span class="sy0">-&gt;</span><span class="nu0">5000</span><span class="sy0">/</span>tcp &nbsp;clever_lumiere</div> +</div> +<p>הערה: הפורט 49153 בצד הלקוח מופה לפורט 5000 בצד השרת.</p> +<p>נגלוש לכתובת זאת ונקבל את המסך הבא:</p> +<p><a href="http://ilsh.info/wp-content/uploads/2014/12/webapp1.png" rel="lightbox"><img src="http://ilsh.info/wp-content/uploads/2014/12/webapp1-300x115.png" alt="webapp1" width="300" height="115" class="aligncenter size-medium wp-image-4593" /></a></p> +<p><br /> +<br /> +כדי לצפות בלוגים של השרת נריץ את הפקודה הבאה:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker logs <span class="sy0">-</span>f clever_lumiere<br /> +&nbsp;<span class="sy0">*</span> Running <span class="kw1">ON</span> http:<span class="sy0">//</span>0<span class="sy0">.</span>0<span class="sy0">.</span>0<span class="sy0">.</span>0:<span class="nu0">5000</span><span class="sy0">/</span><br /> +172<span class="sy0">.</span>17<span class="sy0">.</span>42<span class="sy0">.</span>1 <span class="sy0">-</span> <span class="sy0">-</span> <span class="br0">&#91;</span>07<span class="sy0">/</span>Dec<span class="sy0">/</span><span class="nu0">2014</span> 03:<span class="nu0">49</span>:<span class="nu0">33</span><span class="br0">&#93;</span> <span class="st0">&quot;GET / HTTP/1.1&quot;</span> <span class="nu0">200</span> <span class="sy0">-</span><br /> +172<span class="sy0">.</span>17<span class="sy0">.</span>42<span class="sy0">.</span>1 <span class="sy0">-</span> <span class="sy0">-</span> <span class="br0">&#91;</span>07<span class="sy0">/</span>Dec<span class="sy0">/</span><span class="nu0">2014</span> 03:<span class="nu0">49</span>:<span class="nu0">34</span><span class="br0">&#93;</span> <span class="st0">&quot;GET /favicon.ico HTTP/1.1&quot;</span> <span class="nu0">404</span> <span class="sy0">-</span><br /> +172<span class="sy0">.</span>17<span class="sy0">.</span>42<span class="sy0">.</span>1 <span class="sy0">-</span> <span class="sy0">-</span> <span class="br0">&#91;</span>07<span class="sy0">/</span>Dec<span class="sy0">/</span><span class="nu0">2014</span> 03:<span class="nu0">50</span>:04<span class="br0">&#93;</span> <span class="st0">&quot;GET / HTTP/1.1&quot;</span> <span class="nu0">200</span> <span class="sy0">-</span><br /> +172<span class="sy0">.</span>17<span class="sy0">.</span>42<span class="sy0">.</span>1 <span class="sy0">-</span> <span class="sy0">-</span> <span class="br0">&#91;</span>07<span class="sy0">/</span>Dec<span class="sy0">/</span><span class="nu0">2014</span> 03:<span class="nu0">50</span>:04<span class="br0">&#93;</span> <span class="st0">&quot;GET /favicon.ico HTTP/1.1&quot;</span> <span class="nu0">404</span> <span class="sy0">-</span><br /> +172<span class="sy0">.</span>17<span class="sy0">.</span>42<span class="sy0">.</span>1 <span class="sy0">-</span> <span class="sy0">-</span> <span class="br0">&#91;</span>07<span class="sy0">/</span>Dec<span class="sy0">/</span><span class="nu0">2014</span> 03:<span class="nu0">50</span>:04<span class="br0">&#93;</span> <span class="st0">&quot;GET /favicon.ico HTTP/1.1&quot;</span> <span class="nu0">404</span> <span class="sy0">-</span></div> +</div> +<p><strong>הערה</strong>: הדגל f- גורם ל- docker להתנהג כמו הפקודה tail -f (כלומר להמשיך להאזין ללוגים ולא לצאת מהמשימה בסיום הרצת הפקודה).</p> +<p><br /> +<br /> +כדי לצפות בתהליכים הרצים בתוך המיכל נריץ את הפקודה top: </p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker top clever_lumiere<br /> +UID &nbsp;PID &nbsp; PPID &nbsp;C &nbsp;STIME &nbsp;TTY &nbsp;TIME &nbsp;CMD<br /> +root &nbsp;<span class="nu0">23777</span> &nbsp;<span class="nu0">1774</span> &nbsp;<span class="nu0">0</span> &nbsp;05:<span class="nu0">33</span> &nbsp;? &nbsp;00:00:00 &nbsp;python app<span class="sy0">.</span>py</div> +</div> +<p>ניתן להבחין שהפקודה python app.py היא הפקודה היחידה שרצה במיכל.</p> +<p><br /> +<br /> +כדי לעצור את עבודת המיכל נריץ את הפקודה הבאה:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker stop clever_lumiere<br /> +clever_lumiere</div> +</div> +<p><br /> +<br /> +אם נרצה להריץ שוב את המיכל יש לנו שתי אפשרויות: לחדש את ריצת המיכל (מאותה הנקודה שרץ בעבר) או לאתחל אותו:</p> +<div class="codesnip-container"> +<div class="sql codesnip">~$ sudo docker start clever_lumiere<br /> +clever_lumiere</div> +</div> +<p><br /> +<br /> +נריץ שוב את הפקודה pocker ps -l וניראה שהמיכל רץ כבר 41 דקות &#8211; כלומר חידשנו את פעולתו.</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker ps <span class="sy0">-</span>l<br /> +CONTAINER ID &nbsp;IMAGE &nbsp;COMMAND &nbsp;CREATED &nbsp;<span class="kw1">STATUS</span> &nbsp;PORTS &nbsp;NAMES<br /> +52d212d850c5 &nbsp;training<span class="sy0">/</span>webapp:latest &nbsp;<span class="st0">&quot;python app.py&quot;</span> &nbsp;<span class="nu0">41</span> minutes ago &nbsp;Up <span class="nu0">50</span> seconds &nbsp;0<span class="sy0">.</span>0<span class="sy0">.</span>0<span class="sy0">.</span>0:<span class="nu0">49154</span><span class="sy0">-&gt;</span><span class="nu0">5000</span><span class="sy0">/</span>tcp &nbsp;clever_lumiere</div> +</div> +<p><br /> +<br /> +לעומת זאת הפקודה restart תגרום להפסקת פעולת המיכל וריצתו מחדש (מאפס):</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker restart clever_lumiere</div> +</div> +<p><br /> +כפי שניתן להיווכח:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker ps <span class="sy0">-</span>l<br /> +CONTAINER ID &nbsp;IMAGE &nbsp;COMMAND &nbsp;CREATED &nbsp;<span class="kw1">STATUS</span> &nbsp;PORTS &nbsp;NAMES<br /> +52d212d850c5 &nbsp;training<span class="sy0">/</span>webapp:latest &nbsp;<span class="st0">&quot;python app.py&quot;</span> &nbsp;<span class="nu0">44</span> minutes ago &nbsp;Up <span class="nu0">2</span> seconds &nbsp;0<span class="sy0">.</span>0<span class="sy0">.</span>0<span class="sy0">.</span>0:<span class="nu0">49155</span><span class="sy0">-&gt;</span><span class="nu0">5000</span><span class="sy0">/</span>tcp &nbsp;clever_lumiere</div> +</div> +<p><br /> +<br /> +כדי להסיר את המיכל יש תחילה לעצור אותו (stop) ורק לאחר מכן נוכל להסיר אותו באמצעות בפקודה rm:</p> +<div class="codesnip-container"> +<div class="sql codesnip">$ sudo docker rm clever_lumiere<br /> +Error response <span class="kw1">FROM</span> daemon: You cannot remove a running container<span class="sy0">.</span> Stop the container before attempting removal <span class="kw1">OR</span> <span class="kw1">USE</span> <span class="sy0">-</span>f<br /> +2014<span class="sy0">/</span>12<span class="sy0">/</span>07 06:21:14 Error: failed <span class="kw1">TO</span> remove one <span class="kw1">OR</span> more containers<br /> +ilan@ilan<span class="sy0">-</span>HP<span class="sy0">-</span>ProBook<span class="sy0">-</span>6450b:~$ sudo docker stop clever_lumiere<br /> +clever_lumiere<br /> +ilan@ilan<span class="sy0">-</span>HP<span class="sy0">-</span>ProBook<span class="sy0">-</span>6450b:~$ sudo docker rm clever_lumiere<br /> +clever_lumiere</div> +</div> +<p><br /> +<br /> +עד לנקודה זאת תמיד השתמשנו במיכלים מוכנים שהורדנו מ- Docker Hub. בפרק הבא נלמד להכין מיכלים בעצמנו</p> +<img src="http://ilsh.info/wp-content/uploads/2007/08/signature.png" alt="My Signature" /><div class="fcbk_share"><div class="fcbk_like"></div></div></content> + <author> + <name>Ilan Shavit</name> + <uri>http://ilsh.info</uri> + </author> + <source> + <title type="html">האתר של שביט אילן » לינוקס ותוכנה חופשית</title> + <subtitle type="html">בלוג על לינוקס ותוכנה חופשית</subtitle> + <link rel="self" href="http://ilsh.info/archives/category/%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/feed"/> + <id>http://ilsh.info/archives/category/%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/feed</id> + <updated>2014-12-19T11:03:37+00:00</updated> + </source> + </entry> + + <entry xml:lang="en-US"> + <title type="html">Orchestrator 1.2.9 GA released</titl |