<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>הבלוג של ארתיום :: אינטרנט</title>
	<link>http://art-blog.no-ip.info/newpress/blog</link>
	<description>בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!</description>
	<atom:link 
		href="http://art-blog.no-ip.info/newpress/blog/rss" 
		rel="self" type="application/rss+xml" />
	
		
		<item>
			<title>נפלאות ה־Comet בשרתי האינטרנט המודרניים...</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/236</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/236</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;כפי שפרסמתי לאחרונה, אני עובד על תמיכה ב־Comet או HTTP Push ב־CppCMS. כאשר הכוונה לאפשרות שרת האינטרנט ליידע את הלקוח על אירוע חדש, למשל: &quot;הגיעה מסר מידי חדש, או מחיר המניה השתנה&quot; &amp;ndash; למעשה להעביר אירועים ללקוח בזמן אמת.&lt;/p&gt;

&lt;p&gt;כיצד התהליך מתבצע? הלקוח פונה לשרת עם בקשת HTTP לקבל עדכונים; והשרת, במקום לענות באופן מידי ממתין ומחזיק את הקשר פתוח. כאשר מגיע האירוע החדש, כמו עדכון מחיר המניה או הודעה חדש מחבר, התשובה נשלחת והתליך חוזר.&lt;/p&gt;

&lt;p&gt;לא מי יודע מה מסובך כמובן זה גם תלוי ביכולת השרת להחזיק קשר HTTP פתוח למשך הרבה זמן.&lt;/p&gt;

&lt;p&gt;אבל, מה קורה אם הלקוח סוגר את הקשר לפני שהוא מקבל תשובה? בבקשות HTTP רגילות זה אירוע נדיר והיישום בצד השרת יכול בקלות &quot;להתעלם&quot; ממצב כזה. ביישומי Comet זה שונה: מספיק שמישהו נכנס לאתר שמחכה לדף שמבצע בקשה מסוג זה ויוצא ממנו, הקשר לקבלת עדכונים ייסגר.&lt;/p&gt;

&lt;p&gt;אבל מה יישום Comet אמור לעשות? תחשבו שמספר הבקשות HTTP שנסגרות לפני דיווח על אירוע מסוים יכול להיות הרבה יותר גדול ממספר התגובות הרלוונטיות בפועל. אז יישום תקין צריך לזהות ניתוקים כאלה, ולמחוק אותם מ&quot;רשימת התפוצה שלו&quot;.&lt;/p&gt;

&lt;p&gt;אבל מה? יישום ה־Comet בד&quot;כ לא מדבר ישירות עם הלקוח בעזרת HTTP אלא מדבר עם שרת web בעזרת פרוטוקול סטנדרטי כמו FastCGI או SCGI. לכן, תפקידו של השרת הוא לדווח ליישום על כך שהלקוח סגר את הקשר. למעשה פרוטוקול FastCGI מגדיר במפורש דרך להפסיק בקשה מסויימת ע&quot;י סגירת ה־socket או שליחת בקשה מיוחדת &quot;Abord Request&quot;, כנ&quot;ל ניתן לבצע בעזרת scgi ע&quot;י ניתוק ה־socket.&lt;/p&gt;

&lt;p&gt;פשוט? כן. האם זה קורה בפועל? לא ממש.&lt;/p&gt;

&lt;p&gt;אחרי שמימשתי מערכת ניתוק הקשר ובדקתי אותה על שרת http פנימי, החלטתי לבדוק את ההתנהגות של שרתי web אמתיים: Lighttpd,‏ Nginx ו־Apache2. מה שגיליתי היה ממש לא נעים: למעט Nginx אף שרת לא מדווח על ניתוק הקשר לא מעל FastCGI ולא מעל SCGI.&lt;/p&gt;

&lt;p&gt;לצורך דוגמה פשוטה, אני יצרתי חיבור ומיד סגרתי אותו, כך עשיתי עשר פעם.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nginx הוא היחיד דיווח על כך ליישום FastCGI באופן מידי ואפשר לי לטפל בלקוח ש&quot;נעלם&quot;&lt;/li&gt;
&lt;li&gt;Apache דיווח רק אחרי timeout ארוך של כדקה הן ב־FastCGI והן ב־SCGI.‏&lt;/li&gt;
&lt;li&gt;lighttpd בכלל שכח מזה והחזיק קשרים פתוחים כל הזמן &amp;ndash; יותר מזה בירידה, הוא התלונן על כך שהיישום שלי &quot;נעלם&quot; ולא ענה לבקשת השרת (שאין לו כבר למי להעביר אותה).&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;בקיצור&amp;hellip; זה היה מאוד מאכזב. אני הייתי מוכן לקבל את זה מ־Apache שידוע כשרת שלא נועד לטפל בהרבה קשרים פתוחים, אבל Lighty? &lt;a href=&quot;http://redmine.lighttpd.net/issues/2058&quot;&gt;פתחתי על זה באג&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;מזל שמימשתי שרת HTTP פנימי בעצמי.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/236"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>CppCMS פוגש Comet</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/234</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/234</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;פרסמתי &lt;a href=&quot;http://art-blog.no-ip.info/cppcms/blog/post/47&quot;&gt;כאן&lt;/a&gt; כתבה על טכנולוגיית &lt;a href=&quot;http://en.wikipedia.org/wiki/Comet_(programming)&quot;&gt;Comet&lt;/a&gt; (או Server Push) הנתמכת בגרסה הבאה של CppCMS.&lt;/p&gt;

&lt;p&gt;הצגתי כדוגמה קלאסית: מימוש של יישום Chat, בצד הלקוח ובצד השרת, בכ־50 שורות קוד בכל אחד מהם, עם שימוש ב־XHR Long Polling.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/234"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>חדשות CppCMS...</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/233</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/233</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;לאחרונה אני עובד בענף ה־refactoring של CppCMS ומבצע שינויים גדולים. אביא כאן סקירה קצרה של השינוי שכבר נמצאות בגרסה ניסיונית:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;אחד השינויים הגדולים והחשובים זה להיפתר מכל התלויות המיותרות או מגבילות.
אחרי שכל השינויים יסתיימו, התלויות היחידות שיישארו הן גרסה עדכנית של Boost
ו־Python לצורכי הפיתוח בלבד.&lt;/p&gt;

&lt;p&gt;חלק מהספריות הוסרו בגלל אי תאימות לדרישות החדשות:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;libfcgi ירד כי ה־API שלו לא מאפשר גישה א־סינכרונית, במקומו, מימשתי את
הפרוטוקול בעצמי על בסיס Boost.Asio.&lt;/li&gt;
&lt;li&gt;ספריית CgiCC ירדה בגלל האיכות הירודה שלה וחוסר יכולת סבירה לתקשר עם המפתח
של אותה הספרייה הבעייתית.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;כך שבגרסה הבאה, תהיה לי אפשרות להכין debים ו־rpmים בקלות&amp;hellip;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;עד היום, פיתוח מול CppCMS דרש שימוש בשרת חיצוני, למרות שיש לי סקריפט
הפעלה אוטומטית של lighttpd, ‏nginx ו־Apache, עכשיו מימשתי שרתי HTTP פנימי פשוט
שמקל על הפיתוח ובנוסף, עתיד יקל על שיבוץ התשתית ביישומים שדורשים ממשק
web ובמערכות משובצות מחשב.&lt;/p&gt;

&lt;p&gt;כך שכיום, CppCMS החדש תומך בשלושה ממשקים FastCGI,‏ SCGI ו־HTTP.‏&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;התווספה תמיכה מסודרת בלוקליזציה עם שימוש ב־std::locale, כך שתצוגת התאריכים,
מספרים, מחרוזות וכד' יתבצעו בהתאם למקובל באותה שפה.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;בגלל שימוש מקיף ב־Boost &amp;ndash; ספריה בלתי תלויה בפלטפורמה, אני סוף־סוף אוכל
להכריז על Windows כפלטפורמה שנתמכת באופן (חצי) רשמי.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;יש עוד הרבה עבודת אינטגרציה של רכיבים שיצאו באופן זמני, כמו ניהול sessions, שינויים ב־cache, שכתוב תמיכה בטפסים ועוד.&lt;/p&gt;

&lt;p&gt;אבל לאט־לאט ההשפעה של השינויים הארכיטקטוניים מתחילים להתבהר.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/233"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>לתמוך או לא לתמוך, זאת השאלה (ב־Win32)?</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/229</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/229</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;כפי שפרסמתי ב&lt;a href=&quot;http://art-blog.no-ip.info/cppcms/blog/post/44&quot;&gt;עבר&lt;/a&gt;, אני עובד על שינויים בפנימיים עמוקים ב־CppCMS שבין השאר יאפשרו:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;תמיכה באירועי צד השרת או Comet.&lt;/li&gt;
&lt;li&gt;תמיכה בבינאום ולורקליזציה.&lt;/li&gt;
&lt;li&gt;תמיכה ב־ABI לאחור.&lt;/li&gt;
&lt;li&gt;ניקיון יסודי של קוד תוך הקטנה משמעותית בשימוש בספריות צד ג'.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;בגלל שאני עושה שינויים כל־כך מהותיים, חשבתי, אולי להוסיף גם תמיכה בעוד פלטפורמה בנוסף לתמיכה ב־Linux,‏ FreeBSD,‏ Solaris ו־Cygwin&amp;hellip; להוסיף תמיכה ב־Windows.&lt;/p&gt;

&lt;p&gt;זה באמת, לא אמור להיות עד כדי כך מסובך, יצא לי כבר פעם לבנות CppCMS עבור Mingw (כמובן נאלצתי לוותר על חלק גדול מהמודולים).&lt;/p&gt;

&lt;p&gt;אבל, בין לבנות משהו שרץ עד לפלטפורמת פיתוח אמתית יש תהום.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/229"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>כתובת הייתה על הקיר - לקראת ההצבעה בכנסת על חוק המאגר הביומטרי </title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/228</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/228</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;לא, שלא תבינו אותי לא נכון, אני ממש לא בעד &lt;a href=&quot;http://no2bio.org/home/&quot;&gt;הקמת המאגר הביומטרי&lt;/a&gt; שיש לו המון השלכות שליליות. אני עדיין מקווה שהחוק כפישהו לא יעבור&amp;hellip;&lt;/p&gt;

&lt;p&gt;כל מה רציתי לומר: &quot;&lt;em&gt;הכתובת מזמן הייתה על הקיר&lt;/em&gt;&quot;&lt;/p&gt;

&lt;p&gt;יש בעיה הרבה יותר עמוקה מהמאגר הביומטרי, הוא בסה&quot;כ עוד שלב איבוד הפרטיות שחל בעולם כולו. רק שהפעם ממשלה החליטה לקחת בו חלק&amp;hellip; זה היגיוני, עם בכל־כך הרבה מקומות נהנים מהמאגרים הביומרטיים, אז למה שהממשלה לא תיקח?&lt;/p&gt;

&lt;p&gt;נתחיל, הנה &lt;a href=&quot;http://www.nrg.co.il/online/1/ART1/921/251.html&quot;&gt;ציטוט&lt;/a&gt; של ח&quot;כ שטרית שהופיע ב־nrg.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;בשדה התעופה יש מאגר [טבעות אצבעות] של 700 אלף איש&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;והנה כמה &lt;a href=&quot;http://www.facebook.com/press/info.php?statistics&quot;&gt;ציטוטים&lt;/a&gt; מאתר Facebook המפורסם:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;More than 1 billion photos uploaded to the site each month&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;והנה הציטוט של מ&lt;a href=&quot;http://blog.shemesh.biz/?p=708&quot;&gt;הכתבה&lt;/a&gt; של שחר שמש:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;ארגון פשע שם מצלמה מעל דלת כניסה לבית בושת. כל מי שנכנס מצולם, תווי פניו משמשים לזיהויו במאגר הביומטרי, מאגר משרד הפנים (שכבר דלף) משמש כדי לבדוק האם הוא נשוי, ואם כן, מה היא כתובתו. אם הוא לא לקוח קבוע, כשבוע לאחר הביקור בבית הבושת דופק אדם בנימוס על דלתו, מגיש לו מעטפה חתומה עם תמונות, ודרישת תשלום.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;ובואו נסכם:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;האם מישהו הכריח אותם לתת תביעת אצבע השדה התעופה כדי לזרז את תהליך המעבר הביקורת? אף אחד&amp;hellip;&lt;/li&gt;
&lt;li&gt;האם מישהו הכריח אותם ליצור מאגר ביומטרי ענק של תווי פנים ההופכים את הזיהוי לקל ע&quot;י תיוג מסודר? אף אחד&amp;hellip;&lt;/li&gt;
&lt;li&gt;מישהו הכריח אותם לפרסם את מצבם האישי ב&lt;a href=&quot;http://www.facebook.com/&quot;&gt;מאגר הביומטר&lt;/a&gt; הגדול בעולם? אף אחד&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;אז אם נחליף את המילה &quot;המאגר הביומרטי&quot; ב־facebook או מאגר טביעות האצבעות הממשלתי במאגר שנמצא בשדה התעופה, מה ישתנה? שום דבר!&lt;/p&gt;

&lt;p&gt;אז האם הבעיה היא החוק? או הבעיה היא הייתה עוד הרבה לפני? מפתיע, עד כמה הבעיה שתיארתי &lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/post/220&quot;&gt;כאן&lt;/a&gt; לפני מספר חודשים צצה פתאום כשהכנסת החליטה &quot;לטפל&quot; בה.&lt;/p&gt;

&lt;p&gt;לא, הבעיה היא לא החוק (אם כי אין לו הצדקה); האם באמת, פריצה למאגר והצלבת נתונים תהיה יותר קלה מהשגת מידע פרטי ביותר שכבר היום &lt;a href=&quot;http://benhamo.org/wp/?p=1585&quot;&gt;ניתן לעשות בקלות&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;הבעיה היא אנחנו. אנחנו כבר מזמן ויתרנו בעצמנו על כל הפרטיות שלנו בעידן הדיגיטלי. כדי לראות את התמונות של חברים שלנו אנחנו פותחים חשבון ב־facebook עם התמונות המתויגות שלנו, כדי לעבור מהר בשדה התעופה אנחנו נותנים את טביעת האצבע שלנו, כדי לקבל הנחות בסופר אנחנו נותנים המון פרטים ולמעשה מאפשרים לעקוב אחרי הרגלי הצריכה שלנו.&lt;/p&gt;

&lt;p&gt;למעשה, לא צריך לחוקק חוקים&amp;hellip; פשוט כדי לחיות בחברה המודרנית, אנחנו מוותרים על הפרטיות והאנונימיות שלנו, כי זה מה שהסביבה דורשת והחברה כבר קיבלה את זה; ואם אתה לא מוכן לקבל את זה אתה תהיה כבשה שחורה.&lt;/p&gt;

&lt;p&gt;אז מה לעשות? לוותר?&lt;/p&gt;

&lt;p&gt;לא, אני מקווה שחוק המאגר הביומטרי כפישהו לא יעבור, כי ממש לא בא לי לתת טביעת אצבעות שלי לאף אחד (אפילו לצה&quot;ל, אבל שם לא הייתה לי כל־כך ברירה). מה שהרבה יותר חשוב להעלות מודעות הציבור, כי לא צריך חוקים, לא צריך דליפות כדי לאסוף מידה שרובנו נותנים כל־כך בקלות.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/228"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>&quot;האח הגדול&quot; בהתנדבות ושמו Facebook.</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/220</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/220</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;ביום ראשון, חזרתי מ&lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/post/221&quot;&gt;קונגרס הסלסה&lt;/a&gt; ורציתי למצוא מה מספרים האנשים על הקונגרס באתרי הסלסה הגדולים כמו: &lt;a href=&quot;http://www.lamusica.co.il/&quot;&gt;LaMusica.co.il‏&lt;/a&gt;, ‏&lt;a href=&quot;http://www.salsa.co.il/&quot;&gt;salsa.co.il‏&lt;/a&gt; שעד לא מזמן, היו מקורות מידע מעולים. לתדהמתי גיליתי אתרים שוממים לגמרי. אף אחד לא שואל: &quot;איך היה&quot;, לא מספר &quot;היה מגניב&quot; או מתלונן, אף אחד לא מביע ביקורת.&lt;/p&gt;

&lt;p&gt;למעשה, בשנה האחרונה, לא קראתי ולא כתבתי באתרים אלו באופן פעיל, אלא הייתי רק מציץ לשתי דקות פעם בחודש&amp;ndash;חודשיים. הבנתי, משהו רע מאוד קרה לאתרי הסלסה בארץ. אז נתקלתי ב&lt;a href=&quot;http://www.lamusica.co.il/Forum/viewtopic.php?t=12413&quot;&gt;דיון הזה&lt;/a&gt; בפורום ב־LaMusica והבנתי שכל הפעילות, כל הדיונים עברו ל־Facebook. למעשה, כל השיחות התפזרו בין קבוצות ומועדונים שונים ב־Facebook עצמו אם כי בצורה שונה מהדיונים שהיו פעם. כפי ש־&quot;Icy&quot; סיכם:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;לדעתי הפייסבוק &amp;hellip; אינו מהווה שום תחליף למקום בו ראוי לפרוק את יצר הכתיבה, בטח לא תחליף ל-Lamusica באספקט הזה.&lt;/p&gt;

&lt;p&gt;מה שכן, כולם שם. למה? כי כולם שם. למה? כי כולם שם&amp;hellip;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;למרות, התנגדותי ל־Facebook ורשתות חברתיות בפרט, החלטתי לפתוח חשבון על שם וכתובת דוא&quot;ל בדויים ולהיכנס כדי לראות: מה כותבים על הקונגרס ב&quot;ספר הפרצופים&quot; הגדול בתולדות האנשות.&lt;/p&gt;

&lt;p&gt;מה שגיליתי, פשוט הפחיד אותי&amp;hellip; באמת!&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/220"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>האם בסיס הנתונים הוא צוואר הבקבוק של המערכת?</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/215</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/215</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;אחת &lt;a href=&quot;http://www.whatsup.org.il/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;p=265230#265230&quot;&gt;הדעות המקובלות&lt;/a&gt; בקרב מפתח Web היא שבסיס הנתונים הוא צוואר בקבוק של המערכות. בסופו  של דבר, אם יש המון נתונים והחיפוש לוקח &lt;img src=&quot;/newpress/media/latex/0ca47d9a481af371d1210a620c1945db.gif&quot; alt=&quot;O(\log n)&quot; align=&quot;absmiddle&quot; /&gt; אז אין מה לעשות. ברמה תיאורתית זה נכון.&lt;/p&gt;

&lt;p&gt;אם יש לך בסיס נתונים של 1,000,000‎Gb (שזה &lt;img src=&quot;/newpress/media/latex/2ee355d3c6f657edd9d805529ab3a3d1.gif&quot; alt=&quot;2^{15}&quot; align=&quot;absmiddle&quot; /&gt;‏‎) אז כנראה החזקה מספיק גדולה ואין משמעות לטכנולוגיות אחרות&amp;hellip; השאלה היא האם זה נכון?&lt;/p&gt;

&lt;p&gt;כידוע, מודל הסיבוכיות הוא עובד יפה כשמדובר במספרים גדולים &lt;em&gt;מספיק&lt;/em&gt; ונוהג להתעלם מקבועים. מסתבר שהקבועים הם מספיק חשובים.&lt;/p&gt;

&lt;p&gt;כדי להבין את זה, נקח כדוגמה את אחד הפרוייקטי ה־web הגדולים &amp;mdash; wikipedia או ליתר דיוק את &lt;a href=&quot;http://meta.wikimedia.org/wiki/Wikimedia_servers&quot;&gt;חוות השרתים של wikimedia‏&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;נתונים גולמיים:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;בחוות השרתים נמצאים כ־300 שרתים שונים.&lt;/li&gt;
&lt;li&gt;מתוכם &lt;a href=&quot;http://meta.wikimedia.org/wiki/File:Wikimedia-servers-2008-11-10.svg&quot;&gt;במסלול הראשי&lt;/a&gt;‏:

&lt;ul&gt;
&lt;li&gt;95 שרתי Squid &amp;ndash; מה שנקרא Upstream cache שנותנים מענה לכ־78% מכל הבקשות (hit ratio שלהם).&lt;/li&gt;
&lt;li&gt;144 שרתי Apache+PHP. שנותנים מענה ל־25% הנותרים.&lt;/li&gt;
&lt;li&gt;20 שרתי MySQL שונים הרצים בתצורות Master Slave השונות.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;השרתים האחרים נותנים מענה לחיפוש, טיפול בקבצים סטטיים ועוד.&lt;/li&gt;
&lt;li&gt;מנגנון memcached &lt;a href=&quot;http://meta.wikimedia.org/wiki/Cache_strategy&quot;&gt;משפרים ב&lt;/a&gt;‏־7% הנוספים את היעילות של יצירת התוכן ע&quot;י שרתי Apache.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;strong&gt;לכן&lt;/strong&gt; כיצד שרתי SQL יכולים להוות צוואר בקבוק של המערכת אם הם מהווים פחות מ־10% מכל השרתים הקיימים בחווה? בהנחה שהמערכת שנבנתה ע&quot;י media wiki היא מאוזנת, ברור לנו שרוב העומס החישובי נופל דווקא על שרתי apache המריצים את PHP.&lt;/p&gt;

&lt;p&gt;אז האם באמת בסיס הנתונים הוא צוואר הבקבוק?&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/215"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>ניהול Sessions ב־CppCMS</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/193</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/193</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;&lt;strong&gt;הערה 05/01/2009:&lt;/strong&gt; פורסם מדריך לעבודה עם sessions ב&lt;a href=&quot;http://art-blog.no-ip.info/wikipp/en/page/tut_sessions&quot;&gt;ויקי&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;אחד החלקים חשובים של כל תשתית פיתוח יישומי אינטרנט הוא &amp;mdash; תמיכה בניהול Sessions: שמירת מידע בין בקשות שונות. זה מאפשר להפוך פרוטוקול HTTP שהוא stateless בטבעו ל־statefull. זהו מרכיב הכרחי שקיימ ברוב התשתיות כמו Django או RoR.&lt;/p&gt;

&lt;p&gt;בד&quot;כ, אני נוהג להסתכל בפתרונות הקיימים, לבחור את הטוב ביותר וליישמו במסגרת האילוצים של CppCMS. גם הפעם הסתכלתי בשתי התשתיות הפופולריות RoR ו־Django והבנתי, שהפתרון שהם מציעים, כפי שהוא לא מתאים בגלל אילוצי ביצועים.&lt;/p&gt;

&lt;p&gt;הדרך &quot;זולה&quot; ביותר, היא לשמור את המידע ב&quot;עוגיות&quot; אבל יש לה שני מגרעות:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;יש מגבלה של כ־4K נתונים שניתן לשמור בעוגיה (לא כולל קידוד וכד').&lt;/li&gt;
&lt;li&gt;RoR שנותנת אפשרות ניהול מידע בעוגיות, לא מבטיחה שהמידע השמור לא ייחשף ללקוח &amp;mdash; תחשבו על פתרון Captcha ששמור בתוך עוגיה..&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;שמירת המידע בצד השרת כרוכה בשתי בעיות:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ניהול בסיס נתונים כלשהו לשמירת המידע &amp;mdash; שיכול להוות צוואר בקבוק.&lt;/li&gt;
&lt;li&gt;בעית הביזור שלו גישה מרובת משתמשים.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;לכן, החלטתי שב־CppCMS אני אלך על פתרון קצת שונה שמשלב את התכונות של שניהם (עם שיפורים).&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/193"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>תולדות הבלוג שלי (בעקבותיו של שלומי).</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/175</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/175</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;&lt;a href=&quot;http://sijp.no-ip.info&quot;&gt;שלומי ישראל&lt;/a&gt; (הידוע כ־sijp) &lt;a href=&quot;http://sijp.no-ip.info/node/269&quot;&gt;העביר לי משימה&lt;/a&gt; לכתוב בנושא &quot;תולדות הבלוג שלי&quot;. בד&quot;כ אני לא מתפתה להשתתף בשרשורי משימות כאלה, אבל הפעם, החלטתי שהנושא מספיק מעניין.&lt;/p&gt;

&lt;p&gt;הכל התחיל לפני יותר משנתיים, כאשר פרסמתי את &lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/post/4&quot;&gt;הכתבה הראשונה שלי&lt;/a&gt;. אז התקנתי מערכת בלוגים &lt;a href=&quot;http://wph.co.il/&quot;&gt;WordPress בעברית&lt;/a&gt; הסטנדרטית שהייתה אז עוד בגרסה 2.0.7. המערכת הייתה מאוד נחמדה והשתמשתי בה הרבה מאוד זמן.&lt;/p&gt;

&lt;p&gt;התכנון המקורי היה להתרכז בשני נושאים:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/cat/2&quot;&gt;סלסה וריקוד&lt;/a&gt; ולהחליף &lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/page/7&quot;&gt;פרסום כתבות&lt;/a&gt; באתר &lt;a href=&quot;http://www.lamusica.co.il&quot;&gt;LaMusica.co.il‏&lt;/a&gt;‏ בכתיבה בבלוג שלי.&lt;/li&gt;
&lt;li&gt;להתחיל לכתוב בנושא תכנה חופשית&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;לצערי, הנושא הראשון, בסופו של דבר, הסתכם במספר מצומצם של כתבות, כך שהבלוג הפך לבלוג מחשבים כמעט טהור; ובסביבות אוקטובר 2007, הוא זכה להיכנס ל־&lt;a href=&quot;http://planet.linux.org.il/&quot;&gt;planet.linux.org.il‏&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;במקביל התחלתי לפתח טכנולוגיית web חדשה &amp;mdash; &lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/cat/25&quot;&gt;‏CppCMS‏&lt;/a&gt;; ובדצמבר 2007, פתחתי &lt;a href=&quot;http://art-blog.no-ip.info/cppcms/blog&quot;&gt;בלוג נוסף באנגלית&lt;/a&gt;, שהיה אמור לשמש אותי לשתי מטרות:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;בניית פלטפורמת הניסוי של הטכנולוגיה החדשה&lt;/li&gt;
&lt;li&gt;פרסום מידע אודות CppCMS לקהל שלא מדבר בעברית.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;יחד עם התקדמות הפרויקט, מערכת הבלוגים הפכה ליותר ויותר בשלה. במאי 2008 החלטתי &lt;a href=&quot;http://art-blog.no-ip.info/newpress/blog/post/135&quot;&gt;להיפרד מוורדפרס&lt;/a&gt; ולהחליפו במערכת החדשה. מאד הבלוג הזה רץ על טהרת C++‎.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/175"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
		<item>
			<title>מה השתנה בדפדפן הזה, או הניצוץ של כרום.</title>
			<link>http://art-blog.no-ip.info/newpress/blog/post/168</link>
			<guid>http://art-blog.no-ip.info/newpress/blog/post/168</guid>
			<description>
			&lt;div style=&quot;direction:rtl&quot;&gt;
			&lt;p&gt;לא, אני לא הולך לכתוב עוד אחת &lt;a href=&quot;http://ira.abramov.org/blog/2008/09/03/chrome/&quot;&gt;מאלף&lt;/a&gt; ו&lt;a href=&quot;http://benhamo.org/wp/?p=918&quot;&gt;אחת&lt;/a&gt; סקירות מתלהבות (או לא כל־כך) על Google Chrome. בסה&quot;כ הגיע עוד דפדפן מעשרות הקיימים: IE, Maxton, Firefox, Galeon, Epiphany, Konqueror, Safari, Flock, Camino, Opera ועוד. אז יש לנו עוד דפדפן, מה הסיפור שלו? היום, לבנות דפדפן זה משהו יחסית פשוט. קח מחלקה של KHTML, Gecko, או של WebKit, דחוף אותה למעטפת GUI ויש לך דפדפן. עכשיו נשאר להמציא עוד כמה עשרות כפתורים מוזרים, להוסיף כמה פיצ'רים נחמדים ולשווק.&lt;/p&gt;

&lt;p&gt;לכן, כפי שאתם יכולים להבין אני לא הולך לדבר על דפדפן עצמו. הוא לא מעניין אותי בתור דפדפן יותר מאשר רוב הדפדפנים שפירטתי לעיל. מה שמעניין אותי באמת,
 זה הצירוף של &lt;strong&gt;WebKit&lt;/strong&gt; עם המותג &lt;strong&gt;Google&lt;/strong&gt;.&lt;/p&gt;

			&lt;p&gt;
			&lt;a href="/newpress/blog/post/168"&gt;המשך...&lt;/a&gt;
			&lt;/p&gt;
			&lt;/div&gt;
			</description>
		</item>
		
	
</channel>
</rss>
