<?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="https://planet.hamakor.org.il/atom.xml"/>
	<link href="https://planet.hamakor.org.il"/>
	<id>https://planet.hamakor.org.il/atom.xml</id>
	<updated>2025-01-18T00:16:20+00:00</updated>
	<generator uri="http://www.planetplanet.org/">http://intertwingly.net/code/venus/</generator>

	<entry>
		<title type="html">איתור מיקום גאוגרפי בדיוק של ארבעה מטרים באמצעות כלי הריגול דפדפן, זה עובד לי רק בוינדוס ודפדפן פיירפוקס , גם כאשר פרטי המיקום של וינדוס מכובים כך שמדובר ככל הנראה על פיטצ'ר של פיירפוקס.</title>
		<link href="https://myrtfm.blogspot.com/2025/01/blog-post.html"/>
		<id>tag:blogger.com,1999:blog-3723948418026603019.post-3404177670953945215</id>
		<updated>2025-01-15T13:25:51+00:00</updated>
		<content type="html">&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;https://internet-israel.com/&quot;&gt;בר זיק&lt;/a&gt; כנראה קבע את המושג &lt;a href=&quot;https://cybercyber.co.il/&quot;&gt;כלי הפריצה הנקרא דפדפן&lt;/a&gt;, אני אוסיף על ההגדרתו ומוסיף &quot;כלי הריגול&quot; דפדפן , הביטוי הזה הוא  הומז' לכתבות שהוא היה עושה בעבר.&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;הסיפור הזה התחיל אחרי שראיתי את המיקום הגאוגרפי שלי בזמן בדיקת כתובת ה IP שלי בזמן שהייתי בהרצאה, הייתי בשוק כאשר קיבלתי מיקום מדוייק ברמת השכונה, לא מצאתי שום דבר כזה במאפייני whois של הכתובת, וגם לא הייתה שום בקשה מהדפדפן לקבל נתוני מיקום. עזבתי את זה לזמן מה ושכחתי מזה,  ואז לפני מספר ימים הייתה לי ההזדמנות לראות עד כמה מנגנון הריגול על בסיס רשתות הויפי התקדם.&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt; &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt; הניסוי עבד על וינדוס 10 ווינדוס 11 , אבל זה לא עבד לי על פדורה ודביאן (יופי לי), קיימת דרישה לדפדפן פיירפוקס עדכני וחיבור לאינטרנט.&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;דבר ראשון בדקתי שכל האפשרויות של ה location כבויים  ב-win10, זה על מנת להיות יותר בטוח לגבי שזה הדפדפן ולא מערכת ההפעלה בצורה ישירה.&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;לאחר מכאן יצרתי את הקוד הפשוט הבא בשביל לבדוק מה הדפדפן יכל להגיד לנו : &lt;/div&gt;
&lt;pre dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;&amp;lt;HTML&amp;gt;
&amp;lt;BODY&amp;gt;
&amp;lt;p id=&quot;loc&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;SCRIPT&amp;gt;&lt;br /&gt;navigator.geolocation.getCurrentPosition((position) =&amp;gt; {
  document.getElementById(&quot;loc&quot;).innerHTML = pos.coords.latitude + ',' + pos.coords.longitude ;
});
&amp;lt;/SCRIPT&amp;gt;
&amp;lt;/BODY&amp;gt;
&amp;lt;/HTML&amp;gt;
&lt;/pre&gt;

&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt; &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt; &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;הקוד משתמש במתודה &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition&quot;&gt;getCurrentPosition&lt;/a&gt; שאמורה להתמך בכל הדפדפנים.&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;שמרתי את הקובץ על המחשב ופתחתי אותו עם דפדפן פיירפוקס, אישרתי קבלת נתוני מיקום, וקיבלתי את מיקום ה GPS בדיוק של פחות מ 4 מטרים על המפה של OpenStreetMap. כלומר הוא פגע בדיוק בבניין בו היתי נמצא. בדקתי עם מספר חברים בעיר ירושלים, ואצל כולם  כולל אני הדיוק היה באזור ה4 מטרים מהבניין.&lt;br /&gt;&lt;br /&gt;את המיקום שלכם אתם מכניסים לתוך המסלול ב OSM לדוגמא אם קיבלנו 31.774926 ו 35.234627 נכניס בצורה הבאה : &lt;br /&gt;&lt;br /&gt;https://www.openstreetmap.org/#map=19/31.774926/35.234627 ניתן לשחק עם הקרבה פחות או יותר ע&quot;י שינוי ה 19 למספר אחר (גבוהה יותר זה קרוב יותר, נמוך יותר זה רחוק יותר).&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt; &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;מכיוון שבמערכת ההפעלה המיקום היה מכובה, אני מניח שמדובר על מערכת המיפוי של &lt;a href=&quot;https://myrtfm.blogspot.com/2018/12/blog-post_3.html&quot;&gt;מוזיללה&lt;/a&gt; או של גוגל.&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;כאשר כיביתי את רכיב הויפי במחשב (ניתקתי את ההתקן מהמחשב) , המיקום באמת היה לפי ה IP במרחק של מעל מאה קילומוטר מהמקום בו הייתי מחובר. כך שאני יכול להיות בטוח שמדובר על אימות לפי רשתות ויפי (במכשיר המדובר אין בלוטות אז זה לא לפי beacons).&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;בדקנו גם באמצעות my-location.org שגם הם נתנו מיקום מדוייק (כולל כתובת מדוייקת).&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;ייתכן שהסיבה לכך שאני לא מצליח לעשות את הבדיקה הזאת בפדורה, היא בגלל ש geoclue צריך הגדרות נוספות על מנת לאפשר עבודה עם מוזילה ורשתות הויפי. &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;בדקתי באתר wigle.net ואני רואה שהאזור שלנו מכוסה בצורה מדהימה, ואפילו ב https://beacondb.net/map יש כבישים ומתקנים חשובים שמכוסים, למעשה לא צריך אפילו GPS שיעבוד בשביל לאתר מיקום עד כמה שאיתור המיקום של פיירפוקס היה מדוייק.&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;אני חושב לנסות לבדוק את הנושא באורן אחרי הגדרה יותר רצינית של geoclue כי הדיוק של הדבר הזה כל כך קרוב שזה ממש יכול להחליף GPS.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;לפני שמישהוא אומר שזה האחריות של בעלי רשתות הויפי שהם לא מחליפים את הציוד שלהם כל שנה כי הBSSID נשמרו ונאספו ע&quot;י מוזילה,  &lt;a href=&quot;https://krebsonsecurity.com/2024/05/why-your-wi-fi-router-doubles-as-an-apple-airtag/&quot;&gt;אפל&lt;/a&gt; ואחרים, אני חושב שזה לא האשמה של הקורבנות שאספו את ה BSSID של הרשתות שלהם אלא זה תקיפה שנעשתה ע&quot;י משתמשים שאספו את המידע הזה והעלו את זה לרשתות, אני לחלוטין רואה העלאה של מיקום גאוגרפי של רשתות וויפי כתקיפה פיזית, מדובר על אלימות, במיוחד לאור העבודה שחלק מרשתות הויפי הם לפי השם הפרטי של האדם (נתבים של בזק) או מספר הטלפון (בית או פלאפון) של האנשים, את זה אני ראיתי באוזורים בהם חיו אנשים מבוגרים. &lt;br /&gt;&lt;/div&gt;</content>
		<author>
			<name>Unknown</name>
			<email>noreply@blogger.com</email>
			<uri>https://myrtfm.blogspot.com/search/label/%D7%AA%D7%95%D7%9B%D7%A0%D7%94%20%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA</uri>
		</author>
		<source>
			<title type="html">MY RTFM</title>
			<subtitle type="html">My read the fine manual page, for web,  linux and life</subtitle>
			<link rel="self" href="https://myrtfm.blogspot.com/feeds/posts/default/-/%D7%AA%D7%95%D7%9B%D7%A0%D7%94+%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA"/>
			<id>tag:blogger.com,1999:blog-3723948418026603019</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">“The fix is to complete the localization”. Not letting people do it is a bug. (Also, some non-standard observations about American health insurance.)</title>
		<link href="https://aharoni.wordpress.com/2024/07/17/the-fix-is-to-complete-the-localization/"/>
		<id>http://aharoni.wordpress.com/?p=3916</id>
		<updated>2025-01-12T20:51:46+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;It sometimes happens in people’s lives that someone tells them something that sounds true and obvious at the time. It turns out that it actually is objectively true, and it is also obvious, or at least sensible, to the person who hears it, but &lt;strong&gt;it’s not obvious to other people&lt;/strong&gt;. But it was obvious to them, so they think that it is obvious to everyone else, even though it isn’t.&lt;/p&gt;



&lt;p&gt;It happens to everyone, and we are probably all bad at consistently noticing it, remembering it, and reflecting on it.&lt;/p&gt;



&lt;p&gt;This post is an attempt to reflect on one such occurrence in my life; there were many others.&lt;/p&gt;



&lt;p&gt;&lt;em&gt;(Comment: This whole post is just my opinion. It doesn’t represent anyone else. In particular, it doesn’t represent other translatewiki.net administrators, MediaWiki developers or localizers, Wikipedia editors, or the Wikimedia Foundation.)&lt;/em&gt;&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;There’s the translatewiki.net website, where the user interface of MediaWiki, the software that powers Wikipedia, as well as of some other Free Software projects, is translated to many languages. This kind of translation is also called “localization”. I mentioned it several times on this blog, most importantly at &lt;a href=&quot;https://aharoni.wordpress.com/2020/10/23/amir-aharonis-quasi-pro-tips-for-translating-the-software-that-powers-wikipedia-2020-edition/&quot;&gt;Amir Aharoni’s Quasi-Pro Tips for Translating the Software That Powers Wikipedia, 2020 Edition&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;Siebrand Mazeland used to be the community manager for that website. Now he’s less active there, and, although it’s a bit weird to say it, and it’s not really official, these days I kind of act like one of its community managers.&lt;/p&gt;



&lt;p&gt;In 2010 or so, Siebrand heard something about a bug in the support of Wikipedia for a certain language. I don’t remember which language it was or what the bug was. Maybe I myself reported something in the display of Hebrew user interface strings, or maybe it was somebody else complaining about something in another language. But I do remember what happened next. Siebrand examined the bug and, with his typical candor, said: &lt;strong&gt;“The fix is to complete the localization”&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;What he meant is that one of the causes of that bug, and perhaps the only cause, was that the volunteers who were translating the user interface into that language didn’t translate all the strings for that feature (strings are also known as “messages” in MediaWiki developers’ and localizers’ jargon). So instead of rushing to complain about a bug, they should have completed the localization first.&lt;/p&gt;



&lt;p&gt;To generalize it, the functionality of all software depends, among many other things, on the completeness of user interface strings. They are essentially a part of the algorithm. They are more presentation than logic, but the end user doesn’t care about those minor distinctions—the end user wants to get their job done.&lt;/p&gt;



&lt;p&gt;Those strings are usually written in one language—often English, but occasionally Japanese, Russian, French, or another one. In some software products, they may be translated into other languages. If the translation is incomplete, then the product may work incorrectly in some ways. On the simplest level, users who want to use that product in one language will see the user interface strings in another language that they possibly can’t read. However, it may go beyond that: writing systems for some languages require special fonts, applying which to letters from another writing system may cause weird appearance; strings that are supposed to be shown from left to right will be shown from right to left or vice versa; text size that is good for one language can be wrong for another; and so forth.&lt;/p&gt;



&lt;p&gt;In many cases, simply completing the translation may quietly fix all those bugs. Now, there are reasons why the translation is incomplete: it may be hard to find people who know both English and this language well; the potential translator is a volunteer who is busy with other stuff; the language lacks necessary technical terminology to make the translations, and while this is not a blocker —new terms can be coined along the way—, this may slow things down; a potential translator has good will and wants to volunteer their time, but hasn’t had a chance to use the product and doesn’t understand the messages’ context well enough to make a translation; etc. But in theory, if there is a volunteer who has relevant knowledge and time, then completing the translation, by itself, fixes a lot of bugs.&lt;/p&gt;



&lt;p&gt;Of course, it may also happen that the software actually has other bugs that completing the localization won’t fix, but that’s not the kind of bugs I’m talking about in this post. Or, going even further, software developers can go the extra mile and try to make their product work well even if the localization is incomplete. While this is usually commendable, it’s still better for the localizers to complete the localization. After all, &lt;strong&gt;it should be done anyway&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;That’s one of the main things that motivate me to maintain the localization of MediaWiki and its extensions into Hebrew at 100%. From the perspective of the end users who speak Hebrew, they get a complete user experience in their language. And from my perspective, if there’s a bug in how something works in Wikipedia in Hebrew, then at least I can be sure that the reason for it is not that the translation is incomplete.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;As one of the administrators of translatewiki, I try my best to make complete localization in all languages not just possible, but easy.¹ It directly flows out of Wikimedia’s famous vision statement:&lt;/p&gt;



&lt;blockquote class=&quot;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&quot;&gt;
&lt;p&gt;Imagine a world in which every single human being can freely share in the sum of all knowledge. That’s our commitment.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;I love this vision, and I take the words “Every single human being” and “all knowledge” seriously; they implicitly mean “all languages”, not just for the content, but also for the user interface of the software that people use to read and write this content.&lt;/p&gt;



&lt;p&gt;If you speak Hindi, for example, and you need to search for something in the Hindi Wikipedia, but the search form works only in English, and you don’t know English, finding what you need will be somewhere between hard and impossible, even if the content is actually written in Hindi somewhere. (Comment #1: If you think that everyone who knows Hindi and uses computers also knows English, you are wrong. Comment #2: Hindi is just one example; the same applies to all languages.)&lt;/p&gt;



&lt;p&gt;Granted, it’s not always actually easy to complete the localization. A few paragraphs above, I gave several general examples of why it can be hard in practice. In the particular case of translatewiki.net, there are several additional, specific reasons. For example, translatewiki.net was never properly adapted to mobile screens, and it’s increasingly a big problem. There are other examples, and all of them are, in essence, bugs. I can’t promise to fix them tomorrow, but I acknowledge them, and I hope that some day we’ll find the resources to fix them.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;Many years have passed since I heard Siebrand Mazeland saying that &lt;em&gt;the fix is to complete the localization&lt;/em&gt;. Soon after I heard it, I started dedicating at least a few minutes &lt;em&gt;every day&lt;/em&gt; to living by that principle, but only today I bothered to reflect on it and write this post. The reason I did it today is surprising: I tried to do something about my American health insurance (just a check-up, I’m well, thanks). I logged in to my dental insurance company’s website, and… OMFG:&lt;/p&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://aharoni.wordpress.com/wp-content/uploads/2024/07/d7a6d799d79cd795d79d-d79ed7a1d79a-d79ed6be2024-07-15-13-56-46.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-3926&quot; height=&quot;501&quot; src=&quot;https://aharoni.wordpress.com/wp-content/uploads/2024/07/d7a6d799d79cd795d79d-d79ed7a1d79a-d79ed6be2024-07-15-13-56-46.png?w=991&quot; width=&quot;991&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;What you can see here is that some things are in Hebrew, and some aren’t. If you don’t understand the Hebrew parts, that’s OK, because you aren’t supposed to: they are for Hebrew speakers. But you should note that some parts are in English, and they are all supposed to be in Hebrew.&lt;/p&gt;



&lt;p&gt;For example, you can see that the exclamation point is at the wrong end of “&lt;span dir=&quot;rtl&quot;&gt;Welcome, Amir!&lt;/span&gt;“. The comma is placed unusually, too. That’s because they oriented the direction of the page from right to left for Hebrew, but didn’t translate the word “Welcome” in the user interface.² If they did translate it, the bug wouldn’t be there: it would correctly appear as “&lt;span dir=&quot;rtl&quot; lang=&quot;he&quot;&gt;ברוך בואך, Amir!&lt;/span&gt;“, and no fixes in the code would be necessary.&lt;/p&gt;



&lt;p&gt;You can also see a wrong exclamation point in the end of “&lt;span dir=&quot;rtl&quot;&gt;Thanks for being a Guardian member!&lt;/span&gt;“.&lt;/p&gt;



&lt;p&gt;There are also less obvious bugs here. You can also see that in the word “WIKIMEDIA” under the “Group ID” dropdown, the letter “W” is only partly seen. That’s also a typical RTL bug: the menu may be too narrow for a long string, so the string can be visually truncated, but it should happen at the end of the string and not in the beginning. Because the software here thinks that the end is on the left, the beginning gets truncated instead. This is not exactly an issue that can be fixed just by completing the localization, but if the localization were complete, it would be easier to notice it.&lt;/p&gt;



&lt;p&gt;There are even more issues that you don’t notice if you don’t know Hebrew. For example, there’s a button with a weird label at the top right. Most Hebrew speakers will understand that label as “a famous website”, which is probably not what it is supposed to say. It’s more likely that it’s supposed to say “published web page”, and the translator made a mistake. Completing the translation &lt;em&gt;correctly&lt;/em&gt; would fix this mistake: a thorough translator would review their work, check all the usages of the relevant words, and likely come up with a correct translation. (And maybe the translation is not even made by a human but by machine translation software, in which case it’s the product manager’s mistake. Software should never, ever be released with user interface strings that were machine-translated and not checked by a human.)&lt;/p&gt;



&lt;p&gt;Judging by the logo at the top, the dental insurance company used an off-the-shelf IBM product for managing clients’ info. If I ask IBM or the insurance company nicely, will they let me complete the localization of this product, fixing the existing translation mistakes, and filing the rest of the bugs in their bug tracking software, all without asking for anything in return? Maybe I’ll actually try to do it, but I strongly suspect that they will reject this proposal and think that I’m very weird. In case you wonder, I actually tried doing it with some companies, and that’s what happened most of the time.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;And this attitude is a bug.&lt;/strong&gt; It’s not a bug in code, but it is very much a problem in product management and attitude toward business.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;If you want to tell me “Amir, why don’t you just switch to English and save yourself the hassle”, then I have two answers for you.&lt;/p&gt;



&lt;p&gt;The first answer is described in detail in a blog post I wrote many years ago: &lt;a href=&quot;https://aharoni.wordpress.com/2011/08/24/the-software-localization-paradox/&quot;&gt;The Software Localization Paradox&lt;/a&gt;. Briefly: Sure, I can save myself the hassle, but if I don’t notice it and speak about it, then who will?&lt;/p&gt;



&lt;p&gt;The second answer is basically the same, but with more pathos. It’s a quote from &lt;a href=&quot;https://www.sefaria.org/Pirkei_Avot.1.14?lang=bi&amp;amp;with=all&amp;amp;lang2=en&quot;&gt;Avot 1:14&lt;/a&gt;, one of the most famous and cited pieces of Jewish literature outside the Bible: &lt;em&gt;If I am not for myself, who is for me? But if I am for my own self, what am I? And if not now, when?&lt;/em&gt; I’m sure that many cultures have proverbs that express similar ideas, but this particular proverb is ours.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;And if you want to tell me, “Amir, what is wrong with you? Why does it even cross your mind to want to help not one, but &lt;em&gt;two&lt;/em&gt; ultramegarich companies for free?”, then you are quite right, idealistically. But pragmatically, it’s more complicated.&lt;/p&gt;



&lt;p&gt;Wikimedia understands the importance of localization and lets volunteers translate everything. So do many other Free Software projects. But experience and observation taught me that for-profit corporations don’t prioritize good support for languages unless regulation forces them to do it or they have exceptionally strong reasons to think that it will be good for their income or marketing.&lt;/p&gt;



&lt;p&gt;It did happen a few times that corporations that develop non-Free software let volunteers localize it: Facebook, WhatsApp, and Waze are somewhat famous examples; Twitter used to do it (but stopped long ago); and Microsoft occasionally lets people do such things. Also, Quora reached out to me to review the localization before they launched in Hebrew and even incorporated some of my suggestions.³&lt;/p&gt;



&lt;p&gt;Very often, however, corporations don’t want to do this at all, and when they do it, they often don’t do it very well. But people who don’t know English want—and often need!—to use their products. And I never get tired of reminding everyone that &lt;strong&gt;most people don’t know English&lt;/strong&gt;.&lt;/p&gt;



&lt;p&gt;So for the sake of most humanity, someone has to make all software, including the non-Free products, better localized, and &lt;em&gt;localizable&lt;/em&gt;. Of course, it’s not feasible or sustainable that I alone will do it as a volunteer, even for one language. I barely have time to do it for one language in one product (MediaWiki). But that’s why I am &lt;em&gt;thinking&lt;/em&gt; of it: I would be not so much helping a rich corporation here as I would be helping people who don’t know English.&lt;/p&gt;



&lt;p&gt;Something has to change in the software development world. It would, of course, be nice if all software became Freely-licensed, but if that doesn’t happen, it would be nice if non-Free software would be more open to accepting localization from volunteers. I don’t know how will this change happen, but it is necessary.&lt;/p&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;If you bothered to read until here, thank you. I wanted to finish with two things:&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;To thank Siebrand Mazeland again for doing so much to lay the foundations of the MediaWiki localization and the translatewiki community, and for saying that &lt;strong&gt;the fix is to complete the localization&lt;/strong&gt;. It may have been an off-hand remark at the time, but it turned out that there was much to elaborate on.&lt;/li&gt;



&lt;li&gt;To ask you, the reader: If you know any language other than English, please use all apps, websites, and devices in this language as much as you can, bother to report bugs in its localization to that language, and invest some time and effort into volunteering to complete the localization of this software to your language. &lt;a href=&quot;https://aharoni.wordpress.com/2020/10/23/amir-aharonis-quasi-pro-tips-for-translating-the-software-that-powers-wikipedia-2020-edition/&quot;&gt;Localizing the software that runs Wikipedia&lt;/a&gt; would be great. Localizing OpenStreetMap is a good idea, too, and it’s done on the same website. Other projects that are good for humanity and that accept volunteer localization are Mozilla, Signal, WordPress, and BeMyEyes. There are many others.⁴ It’s one of the best things that you can do for the people who speak your language and for humanity in general.&lt;/li&gt;
&lt;/ol&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;¹ And here’s another acknowledgement and reflection: This sentence is based on the first chapter of one of the most classic books about software development in general and about Free Software in particular: &lt;em&gt;Programming Perl&lt;/em&gt; by Larry Wall (with Randal L. Schwartz, Tom Christiansen, and Jon Orwant): “Computer languages differ not so much in what they make possible, but in what they make easy”. The same is true for software localization platforms. The sentence about the end user wanting to get their job done is inspired by that book, too.&lt;/p&gt;



&lt;p&gt;² I don’t expect them to have my name translated. While it’s quite desirable, it’s understandably difficult, and there are almost no software products that can store people’s names in multiple languages. Facebook kind of tries, but does not totally succeed. Maybe it will work well some day.&lt;/p&gt;



&lt;p&gt;³ Unfortunately, as far as I can tell, Quora abandoned the development of the version in Hebrew and in all other non-English languages in 2022, and in 2023, they abandoned the English version, too.&lt;/p&gt;



&lt;p&gt;⁴ But please think twice before volunteering to localize blockchain or AI projects. I heard several times about volunteers who invested their time into such things, and I was sad that they wasted their volunteering time on this pointlessness. Almost all blockchain projects are pointless. With AI projects, it’s more complicated: some of them are actually useful, but many are not. So I’m not saying “don’t do it”, but I am saying “think twice”.&lt;/p&gt;</content>
		<author>
			<name>aharoni</name>
			<uri>https://aharoni.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Free Software – Aharoni in Unicode</title>
			<subtitle type="html">Treacle tarts for great justice</subtitle>
			<link rel="self" href="https://aharoni.wordpress.com/category/free-software/feed/atom/"/>
			<id>http://aharoni.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Configuring LDAC Quality in PipeWire</title>
		<link href="https://www.guyrutenberg.com/2025/01/09/configuring-ldac-quality-in-pipewire/"/>
		<id>https://www.guyrutenberg.com/?p=1036116</id>
		<updated>2025-01-09T07:02:52+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;div class=&quot;wp-block-jetpack-markdown&quot;&gt;&lt;p&gt;You can set the &lt;a href=&quot;https://en.wikipedia.org/wiki/LDAC_(codec)&quot;&gt;LDAC&lt;/a&gt; quality between High, Standard, and Mobile quality, corresponding to 990/660/330 kbps. You can do it either statically or dynamically.&lt;/p&gt;
&lt;h2&gt;Static Configuration&lt;/h2&gt;
&lt;p&gt;Place the following configuration in &lt;code&gt;~/.config/wireplumber/wireplumber.conf.d/10-bluez.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;monitor.bluez.rules = [
  {
    matches = [
      {
        ## This matches all Bluetooth devices.
        device.name = &quot;~bluez_card.*&quot;
      }
    ]
    actions = {
      update-props = {
        bluez5.a2dp.ldac.quality = &quot;sq&quot;
      }
    }
  }
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The value of &lt;code&gt;quality&lt;/code&gt; can be set to either &lt;code&gt;hq&lt;/code&gt;, &lt;code&gt;sq&lt;/code&gt;, &lt;code&gt;mq&lt;/code&gt;, or &lt;code&gt;auto&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can also change the match fragment to match only a specific device. Use the following command to list all currently available devices:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pw-cli ls | grep device.name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After changing the configuration, you’ll have to restart WirePlumber:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ systemctl --user restart wireplumber
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Dynamic Configuration&lt;/h2&gt;
&lt;p&gt;This method is less user-friendly. The first step is to find the &lt;code&gt;id&lt;/code&gt; of the relevant output node. You can do this by examining the output of &lt;code&gt;pw-cli ls&lt;/code&gt; or &lt;code&gt;wpctl status&lt;/code&gt;. Make sure you pick the id of the corresponding node and not the device. Next, use &lt;code&gt;pw-cli set-param&lt;/code&gt; to set the quality, for example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pw-cli set-param 93 Props '{quality=0}'
Object: size 32, type Spa:Pod:Object:Param:Props (262146), id Spa:Enum:ParamId:Props (2)
  Prop: key Spa:Pod:Object:Param:Props:quality (269), flags 00000000
    Int 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Where 93 is our node id, and 0 corresponds to &lt;code&gt;hq&lt;/code&gt; quality. Other possible values are: -1 for &lt;code&gt;auto&lt;/code&gt;, 0 for &lt;code&gt;hq&lt;/code&gt;, 1 for &lt;code&gt;sq&lt;/code&gt;, and 2 for &lt;code&gt;mq&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Empirically Verifying Bitrate&lt;/h2&gt;
&lt;p&gt;You can deduce the actual bitrate by sniffing the Bluetooth traffic and analyzing the capture using Wireshark.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo btmon -w btsnoop.log
$ wireshark btsnoop.log
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In Wireshark, go to Statistics -&amp;gt; Capture File Properties, and there you can see the average bits/s and compare it to the bitrate of the expected quality setting.&lt;/p&gt;
&lt;/div&gt;</content>
		<author>
			<name>Guy</name>
			<uri>https://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>https://www.guyrutenberg.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Tiered vs. Fixed Commissions in IBKR</title>
		<link href="https://www.guyrutenberg.com/2025/01/04/tiered-vs-fixed-commissions-in-ibkr/"/>
		<id>https://www.guyrutenberg.com/?p=1036102</id>
		<updated>2025-01-04T15:05:06+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;div class=&quot;wp-block-jetpack-markdown&quot;&gt;&lt;p&gt;This post compares the tiered and fixed commission models offered by Interactive Brokers for trading U.S.-nominated ETFs on the London Stock Exchange (LSE). Fixed commissions are set at 0.05% of the trade value, with a minimum charge of $4. In contrast, tiered commissions begin with a lower minimum of $1.70, but they incur additional exchange fees of 0.0045% of the trade value (with a minimum of £0.10) and a clearing fee of £0.06. While tiered pricing can be advantageous for very large trades, this aspect is less relevant for my trading needs.&lt;/p&gt;
&lt;p&gt;In practice, for small trades up to approximately $7,200, tiered pricing tends to be slightly more beneficial, whereas fixed pricing becomes cheaper for trades exceeding that amount. However, the differences in costs remain relatively minor, as illustrated in the figures below.&lt;/p&gt;
&lt;/div&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-absolute.svg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1036105&quot; src=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-absolute.svg&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-relative.svg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1036104&quot; src=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-relative.svg&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-diff.svg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-1036103&quot; src=&quot;https://www.guyrutenberg.com/wp-content/uploads/2025/01/fixed-vs-tiered-diff.svg&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>Guy</name>
			<uri>https://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>https://www.guyrutenberg.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html">משתמשים ב phosh ושמתם לב שהממשק שלכם נהיה בהיר במקום כהה ? תבדקו אם חסרות לכם חבילות !</title>
		<link href="https://myrtfm.blogspot.com/2024/12/phosh.html"/>
		<id>tag:blogger.com,1999:blog-3723948418026603019.post-1548390266292808237</id>
		<updated>2024-12-29T11:00:00+00:00</updated>
		<content type="html">&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;

שידרגתי לאחרונה את &lt;a href=&quot;https://gitlab.gnome.org/World/Phosh/phosh&quot;&gt;phosh&lt;/a&gt; מ גרסה 40 לגרסה 43 ונתקלתי בבעיה די מציקה , הממשק שלי נהיה בהיר, וסירב לחזור לממשק כהה, אני לא מדבר על בהיר עם קונטרס גבוהה כשיש הרבה אור (שזה פיטצ'ר מגניב לאללה שהוסיפו) , אלא חלק מהתוכונות בעלות רקע לבן גם אם נמצאים במקום חשוך. זה לא קרה בכל התוכנות, למשל בפיירפוקס זה נשאר כהה, אבל ה settings וה dialer היו בהירים.&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;מתברר שבמהלך ההתקנה הוסרה ההתקנה של xdg-desktop-portal-phosh , לאחר שהתקנתי את התוכנה בחירה בממשק כהה איפשרה .. נחשו מה ? להחזיק בממשק כהה במערכת. &lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div dir=&quot;rtl&quot; style=&quot;text-align: right;&quot;&gt;לגבי הפיטצ'ר של מעבר למערכת בהירה באור, את זה האמת גילתי בדרך לעבודה כשיצאתי מהאוטובוס (זה היה ביום ללא ענני הגשם) זה נמצא תחת Mobile Settings ושם תחת Sensors.  אצלי ההגדרה היא על להחליך את הממשק כשזה מגיע ל 500 לוקס. כשאני יוצא בבוקר מהאטובוס הרגש אומר שזה 1200 לוקס. האמת הפיט'ר הזה היה ממש מפתיע ונחמד. &lt;br /&gt;&lt;/div&gt;</content>
		<author>
			<name>Unknown</name>
			<email>noreply@blogger.com</email>
			<uri>https://myrtfm.blogspot.com/search/label/%D7%AA%D7%95%D7%9B%D7%A0%D7%94%20%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA</uri>
		</author>
		<source>
			<title type="html">MY RTFM</title>
			<subtitle type="html">My read the fine manual page, for web,  linux and life</subtitle>
			<link rel="self" href="https://myrtfm.blogspot.com/feeds/posts/default/-/%D7%AA%D7%95%D7%9B%D7%A0%D7%94+%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA"/>
			<id>tag:blogger.com,1999:blog-3723948418026603019</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">רעיון</title>
		<link href="https://haharoni.wordpress.com/2024/11/21/reayon/"/>
		<id>http://haharoni.wordpress.com/?p=5411</id>
		<updated>2024-11-21T01:14:05+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;תרגום להמון שפות, לעיתים קרובות שפות ממש לא צפויות, הוא קטע שמאפיין הרבה דתות, או זרמים בתוך דתות גדולות יותר. מורמונים, ג׳הווז ויטנסז, סיינטולוגיה, הארה קרישנה, &lt;a href=&quot;https://he.wikipedia.org/wiki/%D7%90%D7%97%D7%9E%D7%93%D7%99%D7%9D&quot;&gt;אחמדיה&lt;/a&gt; – כל אלה עושים המון תרגום.&lt;/p&gt;



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



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



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



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



&lt;p&gt;וזה מסביר למה ויקיפדיה יכולה להיות מה שהיא רק בתור מוסד ללא כוונת רווח. היא ממש לא ארגון דתי, אבל היא כן מבוססת על רעיון ללא כל מטרה עסקית: 100% ידע חופשי ו־0 הכנסות לבעלי מניות. כלומר, פשוט אין שם בעלי מניות. הרעיון הזה הומני לגמרי, ועצוב לי לומר שהומניזם הוא דבר „לא הגיוני”, כי זה אמור להיות הדבר הכי הגיוני שיש. בגלל זה כתבתי „לפי הגדרות מסוימות של היגיון”. אילו היה בה רעיון עסקי, לא היו בוויקיפדיה יותר מ־300 שפות, אלא 20 במקרה הטוב, או 1 במקרה הכי סביר.&lt;/p&gt;</content>
		<author>
			<name>aharoni</name>
			<uri>https://haharoni.wordpress.com</uri>
		</author>
		<source>
			<title type="html">תכנה חופשית – חיפושים כמשל</title>
			<subtitle type="html">אָמִיר אַהֲרוֹנִי לָמַד עִבְרִית, אָמִיר אַהֲרוֹנִי לָמַד עִבְרִית</subtitle>
			<link rel="self" href="https://haharoni.wordpress.com/category/%D7%AA%D7%9B%D7%A0%D7%94-%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA/feed/atom/"/>
			<id>http://haharoni.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">מאה, 14</title>
		<link href="https://haharoni.wordpress.com/2024/12/08/mea-14/"/>
		<id>http://haharoni.wordpress.com/?p=5394</id>
		<updated>2024-11-19T20:01:23+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;היום מלאו 14 שנים עבריות לאירוע מכונן בחיים שלי, אבל אני מרשה לעצמי לחשוב שזה אירוע, טוב, אולי לא מכונן, אבל חשוב למדי בהיסטוריה של השפה העברית.&lt;/p&gt;



&lt;p&gt;בז׳ בכסלו תשע״א, 14 בנובמבר 2010, השלמתי את התרגום לעברית של כל ממשק המשתמש של ויקיפדיה ושל מיזמים שקשורים אליה (ויקימילון וכיו״ב). לא עשיתי את זה לבד. היו אנשים שעשו את זה לפניי: רותם דן ורותם ליס (שרק במקרה יש להם אותו שם פרטי), אסף ברטוב, ירון שהרבני, אגבד, ערן רוזנטל ואחרים. אני התחלתי להבין איך עובדת מערכת תרגום הממשק מתישהו ב־2008. ב־2010 התחלתי להבין אותה טוב יותר וקלטתי את הדבר הכי חשוב: התרגום לעברית לא נמצא על 100%. הוא צריך להיות על 100%. החלטתי להביא אותו ל־100%. והבאתי.&lt;/p&gt;



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



&lt;p&gt;מה שחשוב יותר הוא הדבר הבא: מאז אותו יום ב־2010, אני בודק את אחוז התרגום לעברית יום־יום, ואם הוא לא 100%, אני מחזיר אותו ל־100%. יום־יום. ארבע־עשרה שנים. כמעט בלי הפסקות. היו רק שתי הפסקות משמעותיות – בתשע״ה (2014) ובתשע״ט (2018). בשני המקרים זה קרה כי נולדו לי ילדים. ויקיפדיה היא אתר חשוב מאוד בכל השפות, ובפרט בעברית, אבל טיפול בתינוקות שלי הוא דבר חשוב יותר מהתרגום לעברית של ממשק המשתמש שלה. אבל זהו, חוץ מטיפול בתינוקות, אין כמעט דבר חשוב יותר. אז בשני המקרים האלה, היו הפסקות של כמה חודשים שבהם התרגום היה תשעים ומשהו ולא 100%. ואחר־כך הוא חזר להיות 100%.&lt;/p&gt;



&lt;p&gt;התוכנה משתנה כל הזמן ונוספים אליה &lt;a href=&quot;https://he.wikipedia.org/wiki/%D7%9E%D7%97%D7%A8%D7%95%D7%96%D7%AA_(%D7%9E%D7%93%D7%A2%D7%99_%D7%94%D7%9E%D7%97%D7%A9%D7%91)&quot;&gt;מחרוזות&lt;/a&gt; לתרגום (בעגה שלנו אנחנו גם קוראים להן „הודעות”). אז בוקר־בוקר, האחוז של התרגום יורד ל־99%. ואז אני מחזיר אותו ל־100%. אז, לפני ארבע־עשרה שנים, היה צריך לתרגם בסביבות עשרת אלפים הודעות כדי להשלים את כל הממשק. עכשיו זה בסביבות שלושים אלף. לפעמים אנשים אחרים עוזרים לי. חלק מהם כבר הזכרתי ברשימה לעיל. ויש עוד. אפשר למצוא &lt;a href=&quot;https://translatewiki.net/wiki/Special:ActiveLanguages/he&quot;&gt;רשימה מלאה של תורמים לתרגום בעברית&lt;/a&gt;. אבל אני די בטוח שאין עוד אף אחד מלבדי שבודק בוקר־בוקר ומוודא שהאחוזים חוזרים ל־100%.&lt;/p&gt;



&lt;p&gt;וגם אין עוד שפה שבמשך ארבע־עשרה שנים, כמעט בלי הפסקה, חזרה יום־יום ל־100%. צרפתית מגיעה לזה לעיתים קרובות, אבל פחות מעברית. &lt;a href=&quot;https://he.wikipedia.org/wiki/%D7%90%D7%99%D7%A0%D7%98%D7%A8%D7%9C%D7%99%D7%A0%D7%92%D7%95%D7%90%D7%94&quot;&gt;אינטרלינגואה&lt;/a&gt; קרובה לזה מאוד רוב הזמן (זאת שפה שמעט מאוד אנשים משתמשים בה, אבל אחד מהם מתמיד בתרגום הממשק של ויקיפדיה). עוד כמה שפות שקרובות לזה הן הולנדית, סינית (מנדרינית, גם מופשטת וגם מסורתית), נורווגית, גרמנית, טורקית, אוקראינית, מקדונית, סלובנית, ערבית, פורטוגלית, ספרדית, פולנית ועוד.&lt;/p&gt;



&lt;p&gt;אבל אף אחת מהן לא מתמידה על 100% כמו עברית.&lt;/p&gt;



&lt;p&gt;אם אתם קוראים את זה, אתם כנראה משתמשים בוויקיפדיה העברית. ואתם כל הזמן רואים שכל התפריטים וכל הכפתורים בה בעברית. לולי עשיתי את מה שאני כבר ארבע־עשרה שנים, חלק מהם כנראה היו כתובים באנגלית. זה מה שקורה בכל השפות האחרות. אתם כנראה בכלל לא תמהים: „מי בעצם דואג לכך שזה יהיה כתוב בעברית?” וזה בסדר, זאת כל הכוונה שלי שזה יהיה שקוף ופשוט לשימוש וסוג של מובן מאליו. אבל הנה, הגעתם לקרוא את זה, ועכשיו אתם יודעים שזה עבדכם הנאמן ו&lt;a href=&quot;https://translatewiki.net/wiki/Special:ActiveLanguages/he&quot;&gt;עוד כמה מתנדבים נהדרים&lt;/a&gt;.&lt;/p&gt;



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



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



&lt;p&gt;אבל מה שחשוב יותר הוא שאף שאני עושה את זה באופן קבוע כבר ארבע־עשרה שנים ולא מתכוון להפסיק כל עוד אני נושם ויש לי חיבור לאינטרנט, אני לא חייב להיות היחיד שבודק יום־יום אם יש משהו חדש לתרגם. גם אתם יכולים. עושים את זה באתר &lt;a href=&quot;https://translatewiki.net&quot;&gt;translatewiki.net&lt;/a&gt;, אז פשוט צרו חשבון ותתחילו להוסיף תרגומים ולתקן את התרגומים שלי כי אני בטוח עושה טעויות. גם אם לא תעשו את זה, מותר לכם להיות גאים בכך שאתם יודעים לקרוא בשפה היחידה שהממשק של ויקיפדיה מתורגם אליה במלואו. אבל אם כן תעשו את זה, תוכלו להיות גאים עוד יותר כי יהיה לכם חלק בזה. היום קצר והמלאכה מרובה.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>aharoni</name>
			<uri>https://haharoni.wordpress.com</uri>
		</author>
		<source>
			<title type="html">תכנה חופשית – חיפושים כמשל</title>
			<subtitle type="html">אָמִיר אַהֲרוֹנִי לָמַד עִבְרִית, אָמִיר אַהֲרוֹנִי לָמַד עִבְרִית</subtitle>
			<link rel="self" href="https://haharoni.wordpress.com/category/%D7%AA%D7%9B%D7%A0%D7%94-%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA/feed/atom/"/>
			<id>http://haharoni.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html">תמיכה בחצובה או סיפורי הסבת indi ו-indigo לאנדרואיד</title>
		<link href="http://artyom.cppcms.com/post/346"/>
		<id>http://artyom.cppcms.com/post/346</id>
		<updated>2024-11-07T14:01:02+00:00</updated>
		<content type="html">&lt;div style=&quot;direction: rtl;&quot;&gt;
		&lt;h2&gt;מה שטוב בסטנדרטים זה שיש הרבה כאלה...&lt;/h2&gt;

&lt;p&gt;אחרי תקופה ארוכה של פיתוח תוכנה/אפליקציית OpenLiveStacker המיועדת לצילום אסטרונימי בזמן אמת, הגעתי לנקודה שמעבר לתמיכה במצלמה נדרשת תמיכה בחצובה ובמצלמה גנרית. אז איך מתחברים במשהו גנרי? משתמשים בממשק סטנדרטי! בעולם &quot;חלונות&quot; יש ASCOM. בעולם הלינוקס המצב נותן מגוון רחב של סטנדרטים&lt;/p&gt;
		
		&lt;p&gt;
		&lt;a href=&quot;http://artyom.cppcms.com/post/346&quot;&gt;המשך...&lt;/a&gt;
		&lt;/p&gt;
		
		&lt;/div&gt;</content>
		<author>
			<name>Artyom Beilis</name>
			<uri>http://artyom.cppcms.com/</uri>
		</author>
		<source>
			<title type="html">הבלוג של ארתיום :: תכנה חופשית</title>
			<subtitle type="html">בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!</subtitle>
			<link rel="self" href="http://artyom.cppcms.com/rss/cat/3/"/>
			<id>http://artyom.cppcms.com/</id>
		</source>
	</entry>

	<entry>
		<title type="html">הפצה? למי איכפת. האמת שכן</title>
		<link href="http://artyom.cppcms.com/post/345"/>
		<id>http://artyom.cppcms.com/post/345</id>
		<updated>2024-09-30T12:00:53+00:00</updated>
		<content type="html">&lt;div style=&quot;direction: rtl;&quot;&gt;
		&lt;p&gt;אני יודע שימי מלחמת הפצות לינוקס כבר פחות מעניינים - כי כולם בסופו של דבר +/- אותו הדבר. אבל החלטתי להיזכר מה הייתה הדרך שלי.&lt;/p&gt;

&lt;p&gt;התחלתי עם Fedora 3 - הנתנה לי הרגשה מה זה לינוקס מודרני (אז). אבל מהר מאוד התייאשתי - כי הרעיון לשדרג כל 6 חודשים להפצה חצי יציבה - כי זו מעבדתי ניסויים של Red Hat - לא קסם לי.&lt;/p&gt;

&lt;p&gt;המשכתי ל־Debian - ה־stable אז היה ממש ישן עברתי ל־testing שאומנם עבד אבל... היה קשה וגם חיכיתי המון לגרסה &quot;יציבה&quot; שהייתה ישנה עם ההגעה.&lt;/p&gt;

&lt;p&gt;כשרכשתי מחשב מחדש 64 ביט התקנתי עליו גרסת LTS הראשונה של Ubuntu 6.06 ומשם בבית אני עם גרסאות LTS - למה? כי לא בא לי להתעסק יותר מידי בלינוקס.&lt;/p&gt;

&lt;p&gt;בעבודה עבדתי עם RHEL וגם עם CentOS וגם עם גרסאות שונות ומשונות של Ubuntu. שורה תחתונה. זה עובד וזהו. לא משנה מה.&lt;/p&gt;

&lt;p&gt;העיקר שיהיה יציב שלא ישגע עם שדרוגים יותר מידי ויעבוד. ונחמד כשזה נתמך ע&quot;י תוכנה מסחרית&lt;/p&gt;
		
		&lt;/div&gt;</content>
		<author>
			<name>Artyom Beilis</name>
			<uri>http://artyom.cppcms.com/</uri>
		</author>
		<source>
			<title type="html">הבלוג של ארתיום :: תכנה חופשית</title>
			<subtitle type="html">בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!</subtitle>
			<link rel="self" href="http://artyom.cppcms.com/rss/cat/3/"/>
			<id>http://artyom.cppcms.com/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he">שוחררה rusmux 0.6</title>
		<link href="https://meirkriheli.com/2024/08/introducing-rusmux/"/>
		<id>https://meirkriheli.com/2024/08/introducing-rusmux/</id>
		<updated>2024-08-27T21:50:51+00:00</updated>
		<content type="html">שוחררה rusmux 0.6 עם תיקון באג, זוג שמות פקודה חדשים ותמיכה באפשרויות פר-חלון ב־tmux.</content>
		<author>
			<name>Meir Kriheli</name>
			<uri>https://meirkriheli.com/tags/floss/</uri>
		</author>
		<source>
			<title type="html">Floss on Meir Kriheli</title>
			<subtitle type="html">Recent content in Floss on Meir Kriheli</subtitle>
			<link rel="self" href="https://www.meirkriheli.com/tags/floss/tag.rss"/>
			<id>https://meirkriheli.com/tags/floss/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">קול קורא – סיוע בטיוב מודל תרגום לטובת תרגום GNOME</title>
		<link href="https://blogs.gnome.org/yoseforb/2024/07/26/%d7%a7%d7%95%d7%9c-%d7%a7%d7%95%d7%a8%d7%90-%d7%a1%d7%99%d7%95%d7%a2-%d7%91%d7%98%d7%99%d7%95%d7%91-%d7%9e%d7%95%d7%93%d7%9c-%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%9c%d7%98%d7%95%d7%91%d7%aa-%d7%aa/"/>
		<id>https://blogs.gnome.org/yoseforb/?p=6417</id>
		<updated>2024-07-26T07:16:38+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;בוקר טוב.&lt;/p&gt;
&lt;p&gt;מזה זמן רב שלא כתבתי כאן. אני מקווה לחזור ולכתוב מפעם לפעם.&lt;/p&gt;
&lt;p&gt;כפי שידוע לכם, אני עוסק מזה למעלה מעשור בתרגום GNOME לעברית, יחד עם ירון שהרבני, בהתנדבות מלאה.&lt;/p&gt;
&lt;p&gt;התרגום כיום במצב מצוין: 98% ל־GNOME 46, ו־95% ליישומי „מעטפת GNOME”.&lt;/p&gt;
&lt;p&gt;אנו רוצים להמשיך לתרגם יישומים נוספים ולהמשיך ולתרגם את אלה הקיימים – בזמן קצר יותר.&lt;/p&gt;
&lt;p&gt;לשם כך אנחנו רוצים לטייב מודל (בינה מלאכותית, למידת מכונה) קיים שמתרגם מאנגלית לעברית, באמצעות כ־100,000 מחרוזות תרגום איכותיות שיש לנו, כך שהמודל יתרגם על פי כללי התרגום של GNOME.&lt;/p&gt;
&lt;p&gt;השאיפה – מודל קטן שניתן להרצה על מחשב (או על שרת), אליו ניתן לשלוח קובץ he.po לא מתורגם, ולקבל אותו בחזרה מתורגם, עם סימון על המחרוזות שתורגמו אוטומטית (כדי שנדע לעבור עליהם).&lt;/p&gt;
&lt;p&gt;לפני כחודש כתבתי קוד Python קצר שעושה את התהליך הפשוט הזה על בסיס מודל של OPUS. אבל OPUS לא מתרגם לפי כללי התרגום שלנו ל־GNOME (למרות שהוא אומן גם על תרגומים מ־GNOME).&lt;/p&gt;
&lt;p&gt;אין לי העדפה להתבסס דווקא על המודל של OPUS. אני רוצה לאמן מודל פתוח כלשהו, שהוא מספיק טוב, על בסיס הנתונים שיש לנו מ־GNOME, כדי לקבל תרגום על פי כללי התרגום של GNOME.&lt;/p&gt;
&lt;p&gt;אני קורא כאן למי שבקיא בתחום, למי שיש יכולת לגייס משאבים על מנת לטייב מודל כזה – לסייע לנו.&lt;/p&gt;
&lt;p&gt;אנחנו, צוות התרגום של GNOME, נדע להביא 100,000 מחרוזות מתורגמות לאימון, מכם נצטרך את השאר.&lt;/p&gt;
&lt;p&gt;ניתן ליצור קשר בכתובת yoseforb אצל gmail.com או yoseforb אצל gnome.org. אפשרות נוספת – לשלוח הודעה כאן באתר או להיכנס לדף צוות התרגום: &lt;a href=&quot;https://l10n.gnome.org/teams/he/&quot;&gt;https://l10n.gnome.org/teams/he/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;תודה,&lt;/p&gt;
&lt;p&gt;יוסף אור&lt;/p&gt;
&lt;p&gt;בשם צוות תרגום GNOME לעברית&lt;/p&gt;</content>
		<author>
			<name>yoseforb</name>
			<uri>https://blogs.gnome.org/yoseforb</uri>
		</author>
		<source>
			<title type="html">יוֹסֵף אוֹר בּוֹצְ׳קוֹ</title>
			<subtitle type="html">סְתָם עוֹד בְּלוֹג עַל GNOME</subtitle>
			<link rel="self" href="https://blogs.gnome.org/yoseforb/feed/"/>
			<id>https://blogs.gnome.org/yoseforb</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Motivation to Keep Going on a Project</title>
		<link href="https://ilya-sher.org/2024/07/26/motivation-to-keep-going-on-a-project/"/>
		<id>http://ilya-sher.org/?p=7825</id>
		<updated>2024-07-26T05:22:17+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;I have a friend that likes the feeling of progress in the professional area. He considers working on a project as part of his professional development. Following our discussion with regards to staying motivated on such a project, I would like to describe the factors that keep me going. Your factors are likely to be different but I would like to share mine as a starting point.&lt;/p&gt;



&lt;p&gt;I hope that this article will help you, the reader, to pick and/or stay motivated on your own project. &lt;em&gt;Note that you should first think hard about what you are trying to achieve and whether a project is the right solution to that.&lt;/em&gt;&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-7832&quot; height=&quot;457&quot; src=&quot;https://ilya-sher.org/wp-content/uploads/2024/07/walking-7617043_640.png?w=640&quot; tabindex=&quot;0&quot; width=&quot;640&quot; /&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;h2 class=&quot;wp-block-heading&quot;&gt;My Project&lt;/h2&gt;



&lt;p&gt;The project I’m basing my self-observations on is &lt;a href=&quot;https://github.com/ngs-lang/ngs&quot;&gt;Next Generation Shell&lt;/a&gt;, an open source shell which doesn’t ignore advances that happened outside of the terminal for last decades (do you feel the pain in these words?). I started working on the project in 2013. As of time of writing, which is 2024, I’m still on it.&lt;/p&gt;



&lt;p&gt;The project has two main parts:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Programming language – it’s in a good shape and we use it at work&lt;/li&gt;



&lt;li&gt;User Interface – early stage, too early to impress anyone&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Motivation&lt;/h2&gt;



&lt;p&gt;I can not separate motivation from picking the project. In my case, all the original motivation behind starting the project is still relevant. It’s worth noting that my feeling is that this project chose me, not the other way around.&lt;/p&gt;



&lt;p&gt;Roughly from more significant motivators to less significant ones:&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Pain. My project solves my own pain. I was programming in bash and Python. They both suck for DevOps scripting. Looked around for other languages and projects that would be aligned with my vision of the solution. Found none. Decided to do it myself. It was very clear from the beginning though that the amount of effort to solve my own pain doesn’t justify working on the project… if not for the next point:&lt;/li&gt;



&lt;li&gt;I like helping others to be more productive. Software is a very scalable way to do exactly that. While you can maybe generalize this as “the project is aligned with my values”, I tend to think about this as “the project is aligned with my intrinsic motivation”. While the programming language should make the user more productive, the UI should really take the productivity to the next level (some would categorize the UI as “groundbreaking”).&lt;/li&gt;



&lt;li&gt;The project became usable long time ago. Around 2016 I think. Seeing that it actually works for yourself is a great motivator. From GitHub issues that are opened from time to time, I assume that others are using NGS too. That means that NGS works for others too, at least to some extent.&lt;/li&gt;



&lt;li&gt;The project is mentally challenging but not too hard (ignoring speed optimizations here, which could be). When I started, I knew roughly how to do it. It touches two topics that I enjoy: programming language design and semantics.&lt;/li&gt;



&lt;li&gt;While I’m writing an NGS script I’m always thinking “how this can be more ergonomic?” and constantly improving the language. When I do the appropriate changes, it’s “NGS just became a bit more useful”. That contributes to the feeling of progress.&lt;/li&gt;



&lt;li&gt;While looking at any piece of code in any other language, it’s always a challenge: should NGS do it better? If yes, how? It’s very motivational to see that in many cases NGS does it better that the piece of code in front of me.&lt;/li&gt;



&lt;li&gt;Speaking of comparison, it does make me feel good that the niche is &lt;em&gt;still not covered&lt;/em&gt; (amazing how bad the things still are) and therefore has huge potential for improvement of productivity. Looking at other projects that showcase anything but working with the cloud I’m thinking “Yep, we still need a shell to work with the cloud”.&lt;/li&gt;



&lt;li&gt;It’s something to show to a potential future employer.&lt;/li&gt;



&lt;li&gt;Not a near future plan but there is a potential for a startup here which would provide cloud-based enterprise features (I had a list of such features written down somewhere). If you can &lt;a href=&quot;https://www.warp.dev/&quot;&gt;do that around a terminal&lt;/a&gt;, I guess you can do it around a shell.&lt;/li&gt;
&lt;/ol&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Demotivation&lt;/h2&gt;



&lt;p&gt;Some things are demotivating when working on the project. Here they are and how I handle the ones that I know how (after “//”).&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;“You don’t understand, bash is perfect, we don’t need another shell” comments. // There are people that just can’t be moved easily.
&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;I’m sure some assembler programmers didn’t want to move to Fortran or COBOL or C. Some didn’t want to move from these to let’s say Java or Python. There is no more “right” motivation behind creating a programming language than dissatisfaction with existing ones.&lt;/li&gt;



&lt;li&gt;With regards to UI, some people think that Command Line Interface which mostly limits the interaction to a single line is the pinnacle of UX &lt;em&gt;today&lt;/em&gt;. Well, I disagree and I’m about to prove that we can do better. It’s actually partially proven since 1976, when Bill Joy released &lt;a href=&quot;https://en.wikipedia.org/wiki/Vi_(text_editor)&quot;&gt;vi&lt;/a&gt; which used the whole screen for text editing. Now I just need to prove the same for the shell instead of text editing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;



&lt;li&gt;UI is not ready yet and I can’t show it. I assume it’s way easier to sell productive UI than a programming language. // It shouldn’t be to far away from bare minimum demo though.&lt;/li&gt;



&lt;li&gt;Attracting users and developers is hard. I suspect few reasons:
&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;It’s harder market now. When you have C and you release &lt;code&gt;awk&lt;/code&gt; the amount of convincing is way less than when you have Python and Ruby and many other languages which are popular and kind-of do the job.&lt;/li&gt;



&lt;li&gt;My personal skills in attracting people to a project are not great I assume // Need to team up with someone but again – need to find that person first&lt;/li&gt;



&lt;li&gt;I’m prioritizing technical work above finding users. I guess that “solving my own pain” dominates here.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;



&lt;li&gt;The changes needed to be done to the language to make scripts at work more ergonomic (which I just like doing) come at the expense of working on the UI. It’s just really a hard tradeoff.&lt;/li&gt;
&lt;/ol&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;What motivates you? What demotivates you and how you handle that? Share in the comments.&lt;/p&gt;



&lt;p&gt;Have a nice day!&lt;/p&gt;</content>
		<author>
			<name>Ilya Sher</name>
			<uri>https://ilya-sher.org</uri>
		</author>
		<source>
			<title type="html">Ilya's blog</title>
			<subtitle type="html">Systems and software engineering</subtitle>
			<link rel="self" href="https://ilya-sher.org/feed/"/>
			<id>https://ilya-sher.org</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he">שוחררה python-bidi 0.5</title>
		<link href="https://meirkriheli.com/2024/07/python-bidi-0-5-released/"/>
		<id>https://meirkriheli.com/2024/07/python-bidi-0-5-released/</id>
		<updated>2024-07-23T10:14:30+00:00</updated>
		<content type="html">לאחר מספר שנים, שחררתי את python-bidi 0.5, אשר מבוססת הפעם על Rust crate בשם unicode-bidi.</content>
		<author>
			<name>Meir Kriheli</name>
			<uri>https://meirkriheli.com/tags/floss/</uri>
		</author>
		<source>
			<title type="html">Floss on Meir Kriheli</title>
			<subtitle type="html">Recent content in Floss on Meir Kriheli</subtitle>
			<link rel="self" href="https://www.meirkriheli.com/tags/floss/tag.rss"/>
			<id>https://meirkriheli.com/tags/floss/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Readable TypeScript debug() Output for Protobuf Messages</title>
		<link href="https://ilya-sher.org/2024/07/06/readable-typescript-debug-output-for-protobuf-messages/"/>
		<id>http://ilya-sher.org/?p=7820</id>
		<updated>2024-07-06T06:28:25+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;For search engine indexing and for understanding: &lt;a href=&quot;https://protobuf.dev&quot;&gt;Protobuf&lt;/a&gt; is frequently used with GRPC. Protobuf is how the requests and responses are serialized.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Problem&lt;/h2&gt;



&lt;p&gt;Look at the output below. Printing protobuf messages using debug(‘%j’) produces unreadable output (the first one below). &lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;$ DEBUG=myapp npx ts-node tojson.ts 

  myapp My object without toJSON {&quot;wrappers_&quot;:null,&quot;arrayIndexOffset_&quot;:-1,&quot;array&quot;:[null,null,null,null,null,&quot;Session name 01&quot;],&quot;pivot_&quot;:1.7976931348623157e+308,&quot;convertedPrimitiveFields_&quot;:{}} +0ms

  myapp My object with toJSON {&quot;id&quot;:&quot;&quot;,&quot;CENSORED4&quot;:&quot;&quot;,&quot;CENSORED3&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;name&quot;:&quot;Session name 01&quot;,&quot;CENSORED1&quot;:&quot;&quot;,&quot;status&quot;:0,&quot;CENSORED2&quot;:&quot;&quot;} +1ms
&lt;/code&gt;&lt;/pre&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Solution&lt;/h2&gt;



&lt;p&gt;Here is all you need to make it work. &lt;code&gt;SessionResponse&lt;/code&gt; below is a sample message (&lt;code&gt;export class SessionResponse extends jspb.Message&lt;/code&gt; in another file, after &lt;code&gt;import * as jspb from &quot;google-protobuf&quot;;&lt;/code&gt;)&lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;// --- Setup ---
import {Message} from &quot;google-protobuf&quot;;

import {
    SessionResponse
} from &quot;./PATH/TO/YOUR_GENERATED_PROTOBUF_FILE_pb&quot;;

import debug0 from 'debug';
const debug = debug0('myapp');

const req = new SessionResponse().setName(&quot;Session name 01&quot;);

// --- Test before ---
debug('My object without toJSON %j', req)

// --- Add this to your code --- start ---

declare module &quot;google-protobuf&quot; {
    interface Message {
        toJSON(): any;
    }
}
Message.prototype.toJSON = function () {
    return this.toObject();
}

// --- Add this to your code --- end ---

// --- Test after ---
debug('My object with toJSON %j', req)&lt;/code&gt;&lt;/pre&gt;



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;Hope this helps. Let me know if you have questions.&lt;/p&gt;</content>
		<author>
			<name>Ilya Sher</name>
			<uri>https://ilya-sher.org</uri>
		</author>
		<source>
			<title type="html">Ilya's blog</title>
			<subtitle type="html">Systems and software engineering</subtitle>
			<link rel="self" href="https://ilya-sher.org/feed/"/>
			<id>https://ilya-sher.org</id>
		</source>
	</entry>

	<entry>
		<title type="html">Decrypting bcachefs volumes at boot</title>
		<link href="https://oz123.github.io/writings/2024-03-25-Decrypting-bcachefs-volumes-at-boot/index.html"/>
		<id>https://oz123.github.io/writings/2024-03-25-Decrypting-bcachefs-volumes-at-boot/index.html</id>
		<updated>2024-03-25T14:45:21+00:00</updated>
		<content type="html" xml:lang="en">This blog post describes how to mount an encrypted array of bcachefs disks at boot time.
      &lt;a href=&quot;https://oz123.github.io/writings/2024-03-25-Decrypting-bcachefs-volumes-at-boot/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">Meet-OS, the first public version</title>
		<link href="https://szabgab.com/meet-os-first-version.html"/>
		<id>https://szabgab.com/meet-os-first-version.html</id>
		<updated>2024-01-04T08:58:31+00:00</updated>
		<content type="html">&lt;p&gt;For the full article visit &lt;a href=&quot;https://szabgab.com/meet-os-first-version.html&quot;&gt;Meet-OS, the first public version&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabor Szabo</name>
			<uri>https://szabgab.com</uri>
		</author>
		<source>
			<title type="html">Gabor Szabo Trainer</title>
			<subtitle type="html">Gabor Szabo about Test Automation, developmen process, CI/CD, DevOps</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/szabgab"/>
			<id>https://szabgab.com</id>
			<rights type="html">Copyright 2002-2024, Gabor Szabo</rights>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-us">🎂 The first 100 articles on Rust Maven 🦀</title>
		<link href="https://szabgab.com/rust-maven-100.html"/>
		<id>https://szabgab.com/rust-maven-100.html</id>
		<updated>2024-01-04T07:23:59+00:00</updated>
		<content type="html">&lt;p&gt;For the full article visit &lt;a href=&quot;https://szabgab.com/rust-maven-100.html&quot;&gt;🎂 The first 100 articles on Rust Maven 🦀&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Gabor Szabo</name>
			<uri>https://szabgab.com</uri>
		</author>
		<source>
			<title type="html">Gabor Szabo Trainer</title>
			<subtitle type="html">Gabor Szabo about Test Automation, developmen process, CI/CD, DevOps</subtitle>
			<link rel="self" href="http://feeds.feedburner.com/szabgab"/>
			<id>https://szabgab.com</id>
			<rights type="html">Copyright 2002-2024, Gabor Szabo</rights>
		</source>
	</entry>

	<entry>
		<title type="html">3 years of work on Pipenv in Gentoo come to a happy end</title>
		<link href="https://oz123.github.io/writings/2023-10-28-3-years-of-work-on-Pipenv-in-gentoo-come-to-a-happy-end/index.html"/>
		<id>https://oz123.github.io/writings/2023-10-28-3-years-of-work-on-Pipenv-in-gentoo-come-to-a-happy-end/index.html</id>
		<updated>2023-10-28T14:15:33+00:00</updated>
		<content type="html" xml:lang="en">3 years and 3 months ago, I signed up for maintaining Pipenv in Gentoo. This work made me co-maintainer
of pipenv. I finally closed a long standing bug in Gentoo's pipenv. Due to this work, pipenv now ships
less vendored packages, and is about 20% smaller in size.
      &lt;a href=&quot;https://oz123.github.io/writings/2023-10-28-3-years-of-work-on-Pipenv-in-gentoo-come-to-a-happy-end/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">מה אני פחות אוהב ב golang</title>
		<link href="https://idkn.wordpress.com/2023/09/28/%d7%9e%d7%94-%d7%90%d7%a0%d7%99-%d7%a4%d7%97%d7%95%d7%aa-%d7%90%d7%95%d7%94%d7%91-%d7%91-golang/"/>
		<id>http://idkn.wordpress.com/?p=8287</id>
		<updated>2023-09-28T10:41:21+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;בשנים האחרונות אני רואה המון &quot;תלונות&quot; על שפת golang וכמה התחביר שלה נוראי.&lt;/p&gt;



&lt;p&gt;אישית אני מאוד אוהב את השפה, ומעדיף לכתוב בה המון דברים.&lt;br /&gt;יותר מזה, קשה לי מאוד עם מרבית הפוסטים השונים המביאים &quot;תלונות&quot;.&lt;/p&gt;



&lt;p&gt;הסיבה ל&quot;קושי&quot; הזה, היא שהתלונות אינן ענייניות, אלא תלונות בסגנון של &quot;אני רגיל לבצע לולאת while ובשפת go יש רק לולאת for המחליפה הכל&quot;.&lt;/p&gt;



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



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



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



&lt;span id=&quot;more-8287&quot;&gt;&lt;/span&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;עבודה עם channels&lt;/h2&gt;



&lt;p&gt;כאשר חושבים על &lt;a href=&quot;https://en.wikipedia.org/wiki/Coroutine&quot;&gt;coroutines&lt;/a&gt; (ב go השם או המונח הוא &lt;a href=&quot;https://go.dev/tour/concurrency/1&quot;&gt;goroutines&lt;/a&gt;) יש יכולות לקבל יכולת לתקשר בצורה מאובטחת (מבחינת threads) עם משתנה מסוג &lt;a href=&quot;https://go.dev/doc/effective_go#channels&quot;&gt;channel&lt;/a&gt; שעליו מרכיבים טיפוס נתונים כלשהו.&lt;/p&gt;



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



&lt;p&gt;ניתן &quot;לסגור&quot; את ה channel ואז ההקצאה שלו למעשה משוחררת וניסיון לעבוד איתו יגרום ל runtime error.&lt;/p&gt;



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



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



&lt;h2 class=&quot;wp-block-heading&quot;&gt;שימוש ב Interface&lt;/h2&gt;



&lt;p&gt;בשפת Go יש משהו הנקרא &lt;a href=&quot;https://go.dev/doc/effective_go#interfaces_and_types&quot;&gt;interface&lt;/a&gt;. למונח של interface מספר שימושים שונים, אלו הם העיקריים שבהם:&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;יצוג טיפוס נתונים משתנה- לפעמים מוכר בשם &lt;a href=&quot;https://en.wikipedia.org/wiki/Tagged_union&quot;&gt;variant&lt;/a&gt; בעולם התכנות.&lt;/li&gt;



&lt;li&gt;ליצור מבנה המייצג פונקציות למבנה נתונים או במילים אחרות &lt;a href=&quot;https://en.wikipedia.org/wiki/Application_binary_interface&quot;&gt;ABI&lt;/a&gt;.&lt;/li&gt;



&lt;li&gt;יצירת הגדרה של &lt;a href=&quot;https://en.wikipedia.org/wiki/Generic_programming&quot;&gt;Generics&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;



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



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



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



&lt;p&gt;בעיה שנייה אני לוקח כערבון מוגבל, כי יכול להיות שאני מפספס משהו בהבנה שלי של המימוש של &lt;a href=&quot;https://go.dev/blog/intro-generics&quot;&gt;Generics&lt;/a&gt; (שהוא חדש מאוד בשפת Go) בשפה.&lt;/p&gt;



&lt;p&gt;יש מצב שבו ניתן לקבל JSON שהוא מחרוזת בודדת, או רשימה של מחרוזות (אל תשאלו למה – משהו שנכפה עלי להתמודד איתו). &lt;br /&gt;לא ניתן ליצור מערכת כזו עם Generics. כלומר ניתן ליצור הכרזה של תמיכה לזה, אבל הכרזה של Struct לא תדע להתמודד עם הנושא, ולכן צריך לממש struct אחד לכל סוג המקרים ולבצע המון &quot;עיקומים&quot; להתמודדות עם הנושא.&lt;br /&gt;כלומר לא ניתן לדעת מראש מה ה JSON שיתקבל ואיך הוא יגיע אותו, ולמעשה ה generics לא פתר את הבעיה.&lt;/p&gt;



&lt;p&gt;מה שניתן לעשות זה עדיין צריך להשתמש ב interface גנרי ולא ב Generics אשר תומך בשני המקרים, ואז צריך לעבוד המון עם &lt;a href=&quot;https://en.wikipedia.org/wiki/Reflective_programming&quot;&gt;reflection&lt;/a&gt; (&lt;a href=&quot;https://pkg.go.dev/reflect&quot;&gt;התמיכה שיש ב Go היא מדהימה&lt;/a&gt;) בזמן ריצה ו&lt;a href=&quot;https://github.com/ik5/extratypes/blob/master/sliced_string.go&quot;&gt;לבצע משחקים ולהחליט איך לתרגם את המצב הזה&lt;/a&gt;.&lt;/p&gt;



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



&lt;h2 class=&quot;wp-block-heading&quot;&gt;ביצוע Binding&lt;/h2&gt;



&lt;p&gt;אסיים את הפוסט בנושא הזה.&lt;/p&gt;



&lt;p&gt;כאשר רוצים לדבר עם ספרייה חיצונית (&lt;a href=&quot;https://go.dev/doc/faq#Do_Go_programs_link_with_Cpp_programs&quot;&gt;דבר שמאוד לא מומלץ על פי יוצרי השפה&lt;/a&gt; – בעיה ראשונה), ניתן לבצע &lt;a href=&quot;https://en.wikipedia.org/wiki/Language_binding&quot;&gt;binding&lt;/a&gt; באמצעות &lt;a href=&quot;https://go.dev/blog/cgo&quot;&gt;&quot;חבילה&quot; ווירטואלית בשם C&lt;/a&gt;. ה&quot;חבילה&quot; הזו מתממשקת למשהו הנקרא &lt;a href=&quot;https://pkg.go.dev/cmd/cgo&quot;&gt;cgo&lt;/a&gt; ואיכשהו במטה קסם יש סוג של binding.&lt;/p&gt;



&lt;p&gt;יש עם זה כל כך הרבה בעיות שרק זה דורש סדרת פוסטים משל עצמו.&lt;/p&gt;



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



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;ניהול זיכרון זה דבר נורא, ולא כזה ברור מה ואיך קורה במצבים מסוימים.&lt;/li&gt;



&lt;li&gt;&quot;מחרוזות&quot; זו עוד בעיה קשה ולא ברורה תמיד איך להמיר נכון בין תווי Go ותווי C ואיך המערכת תגיב באופן כללי כאשר יש תווי utf-8 (מחרוזות Go מקודדות ב UTF-8) וכו'. התיעוד לא מספק מענה לכלל המצבים שמגלים אותם רק תוך כדי עבודה על ביצוע ה binding.&lt;/li&gt;



&lt;li&gt;כיצד לבצע נכון data alignment של מידע, למשל union, או &quot;שמירת מקום&quot; בתוך struct במבנה נכון. זה כן אפשרי, אבל לא תמיד בצורה פשוטה, וזה תלוי מצב של קוד C.&lt;/li&gt;



&lt;li&gt;תרגום של macro לא תמיד כזה פשוט או ברור, וגם לא תמיד נחוץ, וקשה מאוד לדעת מראש את זה.&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Circular_reference&quot;&gt;הפניות מעגליות&lt;/a&gt;. כאשר מדובר ב C ו C++ אין namespace של קבצים (האחרון עוד יודע איכשהו ליצור namespace של קוד), וביצוע include בנקודה מסויימת פשוט שופך את התכולה של הכל. זה גורם למצב שבו יש בקוד C שורות עם ifndef להגדרה שתהיה מתחתיה שכל הקוד יהיה תחת אותו ifndef.&lt;br /&gt;העניין הוא שב go אנחנו יוצרים &quot;חבילות&quot; ולפעמים יש סמתוכה של תלויות מעגליות שצריך לחשוב ולתכנן איך להתמודד איתן.&lt;/li&gt;



&lt;li&gt;אין בשפת Go יכולת להגדיר &lt;a href=&quot;https://en.wikipedia.org/wiki/Calling_convention&quot;&gt;calling&lt;/a&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/X86_calling_conventions&quot;&gt; convention&lt;/a&gt;.&lt;br /&gt;לפעמים צריך לכתוב wrapper בC שיתמודד עם זה בשבילי, אם כי לא בכל מצב. לפעמים זה תלוי אפילו בסוג הקומפיילר של C שיהיה בשימוש בזמן ביצוע ה binding ולפעמים צריך לבחור בקומפיילר אחר של Go, דבר שמסבך מערכות בגלל צורך מסוים בספרייה חיצונית.&lt;/li&gt;
&lt;/ul&gt;



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



&lt;h2 class=&quot;wp-block-heading&quot;&gt;סיכום ביניים&lt;/h2&gt;



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



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



&lt;p&gt;תכנות נעים &lt;img alt=&quot;🙂&quot; class=&quot;wp-smiley&quot; src=&quot;https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>ik_5</name>
			<uri>https://idkn.wordpress.com</uri>
		</author>
		<source>
			<title type="html">קוד פתוח – לראות שונה</title>
			<subtitle type="html">מבט שונה בעיקר על (פיתוח) תוכנה, עסקים והקוד הפתוח</subtitle>
			<link rel="self" href="https://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>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Truss violin – I deigned, 3D printed and built a violin and I am releasing it open source</title>
		<link href="https://guysoft.wordpress.com/2023/08/18/truss-violin/"/>
		<id>http://guysoft.wordpress.com/?p=2871</id>
		<updated>2023-09-10T11:31:16+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Hey all,&lt;/p&gt;



&lt;p&gt;In the past years I have had an ongoing project – I wanted an ultra-light modifiable electric violin. And finally I can share it with you.&lt;br /&gt;This violin, weighs with all the parts on just 500 grams, which is the same as my acoustic violin. Moreover, the center of mass is close to the player making the violin feel lighter than an acoustic when playing.&lt;br /&gt;This is made possible by an innovation I came up with, and have not seen anyone else do – The violin uses a truss like the one in a guitar neck, letting you balance the weight of the strings and tune the neck. This means that the violin can be printed with just a 15% infill making it ultra light (pegboard box at 20%).&lt;br /&gt;I am not planning to start a violin-building business, so I see no reason to keep this to myself and I am releasing it. I ask you to give me some attribution, and consider releasing your design too. And perhaps a violin &lt;img alt=&quot;🙂&quot; class=&quot;wp-smiley&quot; src=&quot;https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f642.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/p&gt;



&lt;p&gt;This is the end result&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20230104-wa0008a.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2890&quot; height=&quot;855&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20230104-wa0008a.jpg?w=1983&quot; style=&quot;width: 705px; height: auto;&quot; width=&quot;1983&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Violin fully assembled&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;h2 class=&quot;wp-block-heading&quot;&gt;The design&lt;/h2&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20200325-wa0027a.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2888&quot; height=&quot;314&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20200325-wa0027a.jpg?w=1454&quot; width=&quot;1454&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Design cross-section in Soldworks showing the truss (in blue) that goes along the violin.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;I made the design with the help of several mechanical engineers that I want to thank – Tal Reindel, Michael Lev-Ari Layoush, Itai Meshorer, and Don Corson. Also want to take the opportunity to thank Yair Grinberg, Oleh Shevchuk. It’s also based on the &lt;a href=&quot;https://www.thingiverse.com/thing:781491&quot;&gt;ElVioin v2&lt;/a&gt; which is under the &lt;a href=&quot;https://creativecommons.org/licenses/by-sa/3.0/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Creative Commons – Attribution – Share Alike&lt;/a&gt; license. So you can use it, share it, modify it and even sell it. But our particular design must also be released under the same license.&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://www.printables.com/model/569394-truss-violin&quot;&gt;You can download the design files here&lt;/a&gt;.&lt;/p&gt;



&lt;span id=&quot;more-2871&quot;&gt;&lt;/span&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Pickup&lt;/h2&gt;



&lt;p&gt;You could use other pickups, however I found &lt;a href=&quot;https://www.instagram.com/oleh_shevchuk_violin/&quot;&gt;Oleg’s magnetic pickup&lt;/a&gt; l sounding just amazing, and clear. I think it was worth the money and transforms this instrument to one with a professional quality of sound.&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20230104-wa0009.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2892&quot; height=&quot;1134&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20230104-wa0009.jpg?w=2016&quot; style=&quot;width: 504px; height: 284px;&quot; width=&quot;2016&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Oleg’s pickup mounted on the violin&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;h2 class=&quot;wp-block-heading&quot;&gt;The parts&lt;/h2&gt;



&lt;p&gt;You will need the following parts. I tried adding links so you know what to get, but it does not have to be from these sources.&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;3D printed parts – I recommend using ABS because it means your violin is heat resistant. Print the body parts at 15% infill with the peg-box at 20%.&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.aliexpress.com/item/1005002782250074.html?spm=a2g0o.order_list.order_list_main.218.21ef1802nYZ4DI&quot;&gt;A ukulele truss&lt;/a&gt; 330mm in length – the link is to the exact one I used.&lt;/li&gt;



&lt;li&gt;Guitar tuning keys&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.amazon.com/6-pin-toggle-switch/s?k=6+pin+toggle+switch&quot;&gt;6 Pin Toggle Switch&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;1/4 inch audio jack&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.hm-plastic-shop.co.uk/shop/adhesive-acrifix-1r-14317p.html?CookieConsentChanged=1&quot;&gt;ACRIFIX 1R 0192 glue&lt;/a&gt; (it’s a reactive cement really) – which is amazing and means you need no screws for the body. I found it here for sale and not online.&lt;/li&gt;



&lt;li&gt;Electric wire to fit in the tunnel&lt;/li&gt;



&lt;li&gt;Copper paper to sit on the string&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.aliexpress.com/item/32908406299.html?spm=a2g0o.productlist.0.0.4b31944bq7bBSn&amp;amp;algo_pvid=160a7d11-e8ca-41b7-9355-69c693ceb714&amp;amp;algo_exp_id=160a7d11-e8ca-41b7-9355-69c693ceb714-5&amp;amp;pdp_ext_f=%7B%22sku_id%22%3A%2265842611400%22%7D&amp;amp;pdp_npi=2%40dis%21ILS%2115.29%2111.02%21%21%21%21%21%400b0a050b16660262241553473eef4f%2165842611400%21sea&amp;amp;curPageLogUid=wOlrrbeh2ktV&quot;&gt;Double Sided Conduct Copper Foil Tape&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;Oleg’s pickup (&lt;a href=&quot;https://www.instagram.com/oleh_shevchuk_violin/&quot;&gt;contact&lt;/a&gt;)&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.aliexpress.com/item/32892823129.html?spm=a2g0o.order_list.order_list_main.257.21ef1802nYZ4DI&quot;&gt;Shoulder rest&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;Screw and nuts for chin-rest&lt;/li&gt;



&lt;li&gt;screws for shareholder rest attachment&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://www.smooth-on.com/products/xtc-3d/&quot;&gt;Smooth-on XTC-3D for smoothing&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;Metal-core violin strings (cheap ones seemed to do fine, but you could use D’Addario Hellicore too).&lt;/li&gt;
&lt;/ol&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;The Build&lt;/h3&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Sand any parts you want smooth, or use smooth-on XTC-3D.&lt;/li&gt;



&lt;li&gt;Thread the truss along the body&lt;/li&gt;



&lt;li&gt;Thread the electrical wire along the body and make sure to have slack on both sides&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20221017-wa0026.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2919&quot; height=&quot;2016&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20221017-wa0026.jpg?w=1512&quot; style=&quot;width: 200px; height: auto;&quot; width=&quot;1512&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Electrical wire going along the neck, and grounding the strings at the head&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;

&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/09/20230904_003235a.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2936&quot; height=&quot;778&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/09/20230904_003235a.jpg?w=583&quot; style=&quot;width: 246px; height: auto;&quot; width=&quot;583&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Side view of the neck, the grounding wire of the strings is serviceable&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;ol class=&quot;wp-block-list&quot; start=&quot;4&quot;&gt;
&lt;li&gt;Glue the parts together using the glue. Do this outside.&lt;/li&gt;



&lt;li&gt;At this point it’s a good time to smooth the neck using the Smooth-on XTC-3D for smoothing., although I only did that later in the build.&lt;/li&gt;



&lt;li&gt;Add the tuning keys and screw them in to place. You might need to drill the hole for the screws to go in smoothly.&lt;/li&gt;



&lt;li&gt;Add in the chin rest and shoulder rest attachment.&lt;/li&gt;



&lt;li&gt;I’d recommend a test run with the strings to see that the tension holds at this point – 
&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;thread in the strings and see that it holds together. Make sure to add some nylon or paper under the E and A strings so they don’t cut though the bridge.&lt;/li&gt;



&lt;li&gt;You also need to file a groove in the nut for the strings to keep in place, otherwise you get a buzzing sound. You could use a file, but I found nail scissors also work.&lt;/li&gt;



&lt;li&gt;I personally like placing the lower G string on the tuning key closest to the player and then D, A and E. I know it’s not the normal way but I find it comfortable. You can pick any order you like&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;



&lt;li&gt;This is the cool part about this violin – you can now adjust the truss to compensate for the strings warping the neck.&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/09/20230904_003219q.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2934&quot; height=&quot;756&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/09/20230904_003219q.jpg?w=772&quot; style=&quot;width: 296px; height: auto;&quot; width=&quot;772&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;View of the pegbox, with an allen key in the truss adjusting the neck&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;ol class=&quot;wp-block-list&quot; start=&quot;10&quot;&gt;
&lt;li&gt;Electronics – electric shield the box, install the pickup and solder the components using this diagram:&lt;/li&gt;
&lt;/ol&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220206-wa0018.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2912&quot; height=&quot;809&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220206-wa0018.jpg?w=1649&quot; style=&quot;width: 534px; height: auto;&quot; width=&quot;1649&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Diagram how to wire the pickup&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;

&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20221105-wa0009.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2915&quot; height=&quot;1512&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20221105-wa0009.jpg?w=2016&quot; style=&quot;width: 337px; height: auto;&quot; width=&quot;2016&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Electronic box with copper shielding&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;

&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220902-wa0017.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2921&quot; height=&quot;1200&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220902-wa0017.jpg?w=1600&quot; style=&quot;width: 313px; height: auto;&quot; width=&quot;1600&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Audio jack from the outside&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;

&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220902-wa0018.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2923&quot; height=&quot;1200&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/img-20220902-wa0018.jpg?w=1600&quot; style=&quot;width: 280px; height: auto;&quot; width=&quot;1600&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Switch for parallel or serial pickup configuration&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;

&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/20230611_175826.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2925&quot; height=&quot;3024&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/20230611_175826.jpg?w=4032&quot; style=&quot;width: 316px; height: auto;&quot; width=&quot;4032&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Electronics box closed&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;At this point, you can re-install the strings and you should have a functioning electric violin that is light, sounds good and is customizable. I really like how silent it is, and that I get only the signal of the violin when it’s plugged in.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;How does it sound?&lt;/h2&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://tube.shela.nu/w/ck4PpeEkFdMVN1UXQACZii&quot;&gt;Here is a video of me playing it&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://tube.shela.nu/w/37C1nsSx5ZGCLuWGYaN5N4&quot;&gt;Here is a video of me playing it with a wah wah pedal&lt;/a&gt; (&lt;a href=&quot;https://youtu.be/W9p_l0uESSM&quot;&gt;also on youtube&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;3D parts&lt;/h2&gt;



&lt;p&gt;Here is a link to the 3D parts on &lt;strong&gt;&lt;a href=&quot;https://www.printables.com/model/569394-truss-violin&quot;&gt;printables&lt;/a&gt;&lt;/strong&gt; and (soon on &lt;strong&gt;&lt;a href=&quot;https://www.thingiverse.com/thing:6203470&quot;&gt;thingiverse&lt;/a&gt;&lt;/strong&gt;).&lt;/p&gt;



&lt;p&gt;I would really appreciate any input to the design. Here is a list of things that I know could be done better&lt;/p&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;Things to improve&lt;/h3&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;It’s not easy to thread new stings&lt;/li&gt;



&lt;li&gt;The chin rest is not static and can hit the tuning peg to it. I might fix that myself&lt;/li&gt;



&lt;li&gt;The electronics box screws are too small and I had to use 2mm inserts&lt;/li&gt;
&lt;/ul&gt;



&lt;h3 class=&quot;wp-block-heading&quot;&gt;In memory of Yair Grinberg&lt;/h3&gt;



&lt;p&gt;I also want to note that the violin tuning keys were donated from Yair Grinberg’s workshop. I never met Yair, but I was invited by his family to take parts from his workshop after he passed away. There were a lot of cool things and half-made inventions there. Among the parts where the tuning keys which are part of this violin. I only wish I could have met him exchange ideas and show the violin to him.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Contributions are welcome&lt;/h2&gt;



&lt;p&gt;As always, if you have any input, suggestions or want help to build a violin like this you are welcome to comment.&lt;/p&gt;</content>
		<author>
			<name>GuySoft</name>
			<uri>https://guysoft.wordpress.com</uri>
		</author>
		<source>
			<title type="html">open source – Guysoft's Weblog</title>
			<subtitle type="html">42</subtitle>
			<link rel="self" href="https://guysoft.wordpress.com/category/open-source/feed/atom/"/>
			<id>http://guysoft.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">על SIM ו eSIM</title>
		<link href="https://idkn.wordpress.com/2023/09/03/%d7%a2%d7%9c-sim-%d7%95-esim/"/>
		<id>http://idkn.wordpress.com/?p=8263</id>
		<updated>2023-09-03T09:14:04+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;אני נתקל בכל כך הרבה מידע מוזר על הנושא של eSIM, ומאמרים של עיתונות לאנשים טכניים בארץ שמציגים מידע לא נכון על העולם הזה, שלא לדבר על גישה אשר לדעתי היא ילדותית בסגנון של &quot;אני רוצה, אבל לא מביאים לי&quot;.&lt;/p&gt;



&lt;p&gt;אז החלטתי לנסות ולעשות קצת סדר בנושא.&lt;/p&gt;



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



&lt;span id=&quot;more-8263&quot;&gt;&lt;/span&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;מהו SIM בפשטות?&lt;/h2&gt;



&lt;p&gt;ובכן &lt;a href=&quot;https://en.wikipedia.org/wiki/SIM_card&quot;&gt;SIM&lt;/a&gt; הוא כרטיס &quot;חכם&quot; הנקרא גם &lt;a href=&quot;https://en.wikipedia.org/wiki/Java_Card&quot;&gt;java-card&lt;/a&gt; ומכיל מספר יכולות – כדוגמת מידע &quot;צרוב&quot; קבוע, ומידע צרוב שיכול להשתנות וכתוב בשפת Java עם ספריות יעודיות עבורה המיוצרות על ידי חברת אורקל והחומרה מיוצרת על ידי מספר קטן של חברות.&lt;/p&gt;



&lt;p&gt;גם כרטיס אשראי הוא סוג של java-card ברעיון דומה, אך עם מידע שונה (אין לי ידע בנושא הזה ולכן לא יכול להרחיב).&lt;/p&gt;



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



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



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



&lt;p&gt;לאחר העליה המתאימה, ניתן לבצע פעולות כדוגמת Provisioning על ידי שימוש בהודעות SMS אשר המכשיר יודע לקרוא, ורובן לא מגיעות לבני האדם לקריאה. פעולה זו של שליחת המידע נקראת &lt;a href=&quot;https://en.wikipedia.org/wiki/Over-the-air_update&quot;&gt;OTA – Over The Air&lt;/a&gt;.&lt;/p&gt;



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



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



&lt;h2 class=&quot;wp-block-heading&quot;&gt;מהו eSIM בפשטות?&lt;/h2&gt;



&lt;p&gt;המונח &lt;a href=&quot;https://en.wikipedia.org/wiki/ESIM&quot;&gt;eSIM&lt;/a&gt; הוא מונח לכרטיס פיזי היושב על מודם סלולרי (לרבות טלפונים). האות E בנושא היא עבור המילה Embedded. &lt;/p&gt;



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



&lt;p&gt;ישנן שני &quot;מסלולים&quot; עבור מערכת ה eSIM:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;מערכת OTA משתנה – כאשר ניתן לקבל מערכת &lt;a href=&quot;https://he.wikipedia.org/wiki/%D7%90%D7%99%D7%A0%D7%98%D7%A8%D7%90%D7%A7%D7%98%D7%99%D7%91%D7%99%D7%95%D7%AA&quot;&gt;אינטראקטיבית&lt;/a&gt; (התערבות אנושית).&lt;/li&gt;



&lt;li&gt;מערכת OTA צרובה – כאשר לא ניתן לקבל מערכת אינטראקטיבית (למשל &lt;a href=&quot;https://en.wikipedia.org/wiki/Internet_of_things&quot;&gt;IoT&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;



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



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



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



&lt;p&gt;בד&quot;כ ה OTA מתבצע על ידי קריאה של מחרוזת המסופקת על ידי &lt;a href=&quot;https://en.wikipedia.org/wiki/QR_code&quot;&gt;QR-Code&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;המחרוזת היא &lt;a href=&quot;https://en.wikipedia.org/wiki/Uniform_Resource_Identifier&quot;&gt;URI&lt;/a&gt; של פרופיל הנקרא LPA – Local Profile Assistants.&lt;br /&gt;הדבר הבא במידע יהיה כתובת מערכת ה provisioning עם איזשהו מפתח שהמערכת (SM-DP+‎) תזהה את הבקשה.&lt;/p&gt;



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



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



&lt;h3 class=&quot;wp-block-heading&quot;&gt;iSIM&lt;/h3&gt;



&lt;p&gt;עבור מערכת IoT קטנות במיוחד הדורשות &lt;a href=&quot;https://en.wikipedia.org/wiki/System_on_a_chip&quot;&gt;System On a Chip&lt;/a&gt;, נוצר תת מעבד של eSIM בשם iSIM שהוא למעשה eSIM לכל דבר, אבל עבור סביבה מוגדרת. האות i מייצגת את המילה Integrated.&lt;/p&gt;



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



&lt;hr class=&quot;wp-block-separator has-alpha-channel-opacity&quot; /&gt;



&lt;p&gt;זהו בקצרה ובפשטות על הנושא.&lt;/p&gt;</content>
		<author>
			<name>ik_5</name>
			<uri>https://idkn.wordpress.com</uri>
		</author>
		<source>
			<title type="html">קוד פתוח – לראות שונה</title>
			<subtitle type="html">מבט שונה בעיקר על (פיתוח) תוכנה, עסקים והקוד הפתוח</subtitle>
			<link rel="self" href="https://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>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Fedigroup – group system for the Fediverse</title>
		<link href="https://guysoft.wordpress.com/2023/08/07/fedigroup/"/>
		<id>http://guysoft.wordpress.com/?p=2842</id>
		<updated>2023-08-07T10:25:31+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;Hey all,&lt;/p&gt;


&lt;div class=&quot;wp-block-image&quot;&gt;
&lt;figure class=&quot;alignright size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/default_group_icon.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2861&quot; height=&quot;138&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/default_group_icon.png?w=219&quot; style=&quot;width: 138px; height: 138px;&quot; width=&quot;138&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Fedigroup logo&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;The past year I’ve been playing pretty active on federated social networks. This led me to try and write a federated social network group system. Although this group system is far from being complete since Fedigroup is currently in pre-alpha level. I think it is worth sharing what I have learned, and also explain a bit why, if you met me during the past three years. I’ve been going about federated social networks.&lt;/p&gt;



&lt;p&gt; &lt;a href=&quot;https://hayu.sh/&quot;&gt;You are also welcome to join a server I maintain here&lt;/a&gt;, &lt;a href=&quot;https://hayu.sh/&quot;&gt;Hayu.sh&lt;/a&gt; is the second largest Hebrew-speaking instance.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;What is a federated social network?&lt;/h2&gt;



&lt;p&gt;A federation in servers means everyone can run their own server which is autonomous. And it can communicate with other servers too. Creating a large network. The first protocol on the internet is actually federated too – email.&lt;/p&gt;



&lt;p&gt;There is no one central email server, or single email software. In social networks this means that you join a server, and follow and interact with everyone else. Even though your server could be, like in my case, hosted in your own home, with you owning all the data. You can also join a any other server, and switch between them.&lt;br /&gt;For Hebrew speakers, I gave a small TED lecture about it, which is hosted on a federated video server. &lt;a href=&quot;https://tube.shela.nu/w/isQjpBznB5mQxxZGoE4s2b&quot;&gt;You can watch it here&lt;/a&gt; (Hebrew).&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;The Fediverse is the servers using the a W3C Standard that does just that&lt;/h2&gt;



&lt;p&gt;What made the &lt;a href=&quot;https://en.wikipedia.org/wiki/Fediverse&quot;&gt;Fediverse&lt;/a&gt; possible is the standard that was passed to describe it. The protocol is called &lt;a href=&quot;https://www.w3.org/TR/activitystreams-core/&quot;&gt;ActivityPub 2.0&lt;/a&gt;. And it lets social networks share status messages (notes), shares (boosts) and favorites across different servers. It was created by a group of people who cared, not large companies. Despite some of them being members of the W3C. Its also worth mentioning that one of the major adopters of the ActivityPub 2.0 protocol was &lt;a href=&quot;https://en.wikipedia.org/wiki/Mastodon_(social_network)&quot;&gt;Mastodon&lt;/a&gt;, a type of social network server, which resembles twitter. And that really help gain critical mass.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Why didn’t I hear about this?&lt;/h2&gt;



&lt;p&gt;I was asked this by other developers and power users. It makes people dismiss the Fediverse as a passing or niche thing.&lt;/p&gt;



&lt;p&gt;Unlike Facebook, Twitter even if you’re been avoiding social networks, their marketing will reach you, your news channel, municipality and country are likely using them. Their existence depends on it that you use and browse on their site. However, in the Fediverse does not have a business model that demands it. Or a marketing team. Its just people. You are welcome to join, but no ones income depends on it.&lt;/p&gt;



&lt;p&gt;The Fediverse is growing though, by word-of-mouth, or text-in-blog. Recently even celebrities and others. The latest are the &lt;a href=&quot;https://www.broadbandtvnews.com/2023/08/02/bbc-joins-mastodon-in-experiment-on-decentralised-social-media/&quot;&gt;BBC&lt;/a&gt;, &lt;a href=&quot;https://fediscience.org/@PNASNews&quot;&gt;PNAS&lt;/a&gt;, &lt;a href=&quot;https://universeodon.com/@georgetakei&quot;&gt;George Takei&lt;/a&gt;, &lt;a href=&quot;https://mastodon.social/@neilhimself&quot;&gt;Neil Gaiman&lt;/a&gt;, &lt;a href=&quot;https://mastodonapp.uk/@stephenfry&quot;&gt;Stephen Fry&lt;/a&gt; and the &lt;a href=&quot;https://social.network.europa.eu/@EU_Commission&quot;&gt;European Commission&lt;/a&gt;.&lt;/p&gt;



&lt;span id=&quot;more-2842&quot;&gt;&lt;/span&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Not to be confused with crypto – Which lacks moderation&lt;/h2&gt;



&lt;p&gt;I think one of the strength of the Fediverse is that it’s actually not going with the blockchain trend now, which is where a lot of effort is going to distribute things.&lt;/p&gt;



&lt;p&gt;The Fediverse does not run using the now trendy crypto stuff. The advantage of it is that it costs far less to run. A small server for a few tens of people + a domain and you are good to go.&lt;/p&gt;



&lt;p&gt;Another thing is that having an admin means you have a moderator, which is becoming critical for social networks. Large companies today are unable to moderate the volumes of messages on their social networks, resulting in many bad decisions, people getting blocked by algorithms and others who should roam freely. Many social networks today still don’t have moderation-by-design in mind. Even less in a trust-less network that uses crypto.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;What is Fedigroup&lt;/h2&gt;



&lt;p&gt;Fedigroup is a server type that allows users to create a group and share it across the Fediverse. When a user creates a group, they can specify the topics they want to discuss, and the group, when mentioned, will automatically boost their posts related to those topics. This helps increase visibility for posts within the group and attract more members. Additionally, Fedigroup stores the contents of the group for future reference, making it easier for members to find and access previous discussions. Currently, there is also a web interface available that allows users to search through the contents of groups they belong to (the search button though is not implemented yet). Overall, Fedigroup provides a convenient way for users to create and participate in specialized communities within the Fediverse with group memory.&lt;/p&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Features&lt;/h2&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Federated – you can mention a group and it will boost the message if you are following it&lt;/li&gt;



&lt;li&gt;Has a responsive UI written in &lt;a href=&quot;http://nicegui.io/&quot;&gt;NiceGUI&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;You can log in using your Mastodon/Pleroma or any MastodonAPI compatible account&lt;/li&gt;



&lt;li&gt;You can use your federated account to create group and then you have access to moderate it&lt;/li&gt;



&lt;li&gt;Posts in the group are archived in a database that can be searched (search not implemented)&lt;/li&gt;



&lt;li&gt;See all the posts in the groups you follow&lt;/li&gt;
&lt;/ul&gt;



&lt;h2 class=&quot;wp-block-heading&quot;&gt;Unimplemented (roadmap in theory)&lt;/h2&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;Use your MastodonAPI-compatible account to comment and preform tasks on the WebUI&lt;/li&gt;



&lt;li&gt;Search history of the group&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;wp-block-image is-style-default&quot;&gt;
&lt;figure class=&quot;aligncenter size-large is-resized&quot;&gt;&lt;a href=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/screenshot_20230804_235656.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-2862&quot; height=&quot;401&quot; src=&quot;https://guysoft.wordpress.com/wp-content/uploads/2023/08/screenshot_20230804_235656.png?w=1217&quot; style=&quot;width: 487px; height: 401px;&quot; width=&quot;487&quot; /&gt;&lt;/a&gt;&lt;figcaption class=&quot;wp-element-caption&quot;&gt;Ui of Fedigroup as seen on &lt;a href=&quot;https://fedigroup.party&quot;&gt;https://fedigroup.party&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;


&lt;p&gt;I stopped developing it because it was far too much work only for me. It might pick up if someone joins me, but alone I will not manage to make it as good as others out there. It has potential as being a place to search for history on the Fediverse which is a little challenging today.&lt;/p&gt;



&lt;p&gt;Also I think the recent migration of Reddit users show that the Fediverse is handling groups pretty well.&lt;/p&gt;



&lt;p&gt;Still, Fedigroup was a good learning experience on how the technology works, and I think its worth sharing if you want to build a Federated instance that uses python, FastAPI and PostgreSQL.&lt;/p&gt;



&lt;p&gt;If anyone wants to pick up where I left they are welcome. The &lt;a href=&quot;https://github.com/guysoft/fedigroup&quot;&gt;source code is available on GitHub&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;There is a running instance at: &lt;a href=&quot;https://fedigroup.party&quot;&gt;https://fedigroup.party&lt;/a&gt;&lt;br /&gt;You welcome to try it out and as always – code contributions are welcome&lt;/p&gt;</content>
		<author>
			<name>GuySoft</name>
			<uri>https://guysoft.wordpress.com</uri>
		</author>
		<source>
			<title type="html">open source – Guysoft's Weblog</title>
			<subtitle type="html">42</subtitle>
			<link rel="self" href="https://guysoft.wordpress.com/category/open-source/feed/atom/"/>
			<id>http://guysoft.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">Average Lengths of MediaWiki Translations</title>
		<link href="https://aharoni.wordpress.com/2023/07/26/average-lengths-of-mediawiki-translations/"/>
		<id>http://aharoni.wordpress.com/?p=3817</id>
		<updated>2023-07-26T15:09:08+00:00</updated>
		<content type="html" xml:lang="en">&lt;p&gt;I was wondering: In which languages, user interface translations tend to be longer, and in which ones they are shorter?&lt;/p&gt;



&lt;p&gt;The intuitive answers to these questions are that Chinese and Japanese are very short, English tends to be shorter than the average, Hebrew is shorter than English, and the longest ones are Turkish, Finnish, German, and Tamil. But what if I try to find a more precise answer?&lt;/p&gt;



&lt;p&gt;So I made a super-simplistic calculation: I checked the average length of a core MediaWiki user interface message for English and the 150 languages with the highest number of translations.&lt;/p&gt;



&lt;p&gt;I sorted them from the shortest average length to the longest. The table is at the end of the post.&lt;/p&gt;



&lt;p&gt;Here’s a verbal summary of some interesting points that I found:&lt;/p&gt;



&lt;ol class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;The shortest messages  are found, unsurprisingly, in Chinese, Japanese, and Korean.&lt;/li&gt;



&lt;li&gt;Another group of languages that surprised me by having very short translations are some Arabic-script languages of South Asia: Saraiki, Punjabi, Sindhi, Pashto, Balochi.&lt;/li&gt;



&lt;li&gt;Three more languages surprised me by being at the shoter end of the list: Hill Mari (mhr) and Northern Sami (se), which are Finno-Ugric, a family known for agglutinative grammar that tends to make words longer; and Armenian, about which I, for no particular reason, had the impression that its words are longish.&lt;/li&gt;



&lt;li&gt;English is at #22 out of 151, with an average length of 38.&lt;/li&gt;



&lt;li&gt;Hebrew is slightly above English at #21, with 37.9. This surprised me: I was always under the impression that Hebrew tends to be much shorter.&lt;/li&gt;



&lt;li&gt;The longest languages are not quite the ones I thought! The longest ones tend to be the Romance languages: Lombard, French, Portuguese, Spanish, Galician, Arpitan, Romanian, Catalan.&lt;/li&gt;



&lt;li&gt;Three Germanic languages, namely Colognian, German and Dutch, are on the longer end of the list, but not all of them. (Colognian is the longest in my list. The reason for this is not so natural, though: The most prolific translator into it, User:Purodha, liked writing out abbreviations in full, so it made many strings longer than they could be. He passed away in 2016. May he rest in peace.)&lt;/li&gt;



&lt;li&gt;Other language groups that tend to be longer are Slavic (Belarusian, Russian, Bulgarian, Polish, Ukrainian) and Austronesian (Sakizaya, Ilokano, Tagalog, Bikol, Indonesian).&lt;/li&gt;



&lt;li&gt;Other notable, but not easily grouped languages that tend to be longer are Irish, Greek, Shan, Quechua, Finnish, Hungarian, Basque, and Malayalam. All of them have an average length between 45 and 53 characters.&lt;/li&gt;



&lt;li&gt;Turkish is only slightly above average with 44.1, at #88.&lt;/li&gt;



&lt;li&gt;Tamil is a bit longer, with an average length of 44.6, at #94. Strings in its sister language Malayalam are considerably longer, 49.1.&lt;/li&gt;



&lt;li&gt;The median length is 43, and the average for everyone is 42. Notable languages at these lengths are Mongolian, Serbian, Welsh, Norwegian, Malaysian, Esperanto, Georgian, Balinese, Tatar, Estonian, and Bashkir. (&lt;span lang=&quot;eo&quot;&gt;Esperantistoj, ĉu vi ĝojas aŭdi, ke via lingvo aperas preskaŭ ĝuste en la mezo de ĉi tiu listo?&lt;/span&gt;)&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;One important factor that I didn’t take into account is that, for various reasons, translators to different languages may select to translate different messages, and one of those reasons may be that people choose to translate shorter messages first because they are usually easier. I addressed this in a &lt;em&gt;very&lt;/em&gt; quick and dirty way, by ignoring strings longer than 300 characters. Some time in the (hopefully near) future, I’ll try to make a smarter way to calculate it.&lt;/p&gt;



&lt;p&gt;And here are the full results. Please don’t take them too seriously, and feel free to write your own, better, calculation code!&lt;/p&gt;



&lt;figure class=&quot;wp-block-table&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;#&lt;/td&gt;&lt;td&gt;Language code&lt;/td&gt;&lt;td&gt;Average translation length&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;zh-hans&lt;/td&gt;&lt;td&gt;17.67324825&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;zh-hant&lt;/td&gt;&lt;td&gt;18.52284388&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;skr-arab&lt;/td&gt;&lt;td&gt;21.81899964&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;ja&lt;/td&gt;&lt;td&gt;24.67007612&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;ko&lt;/td&gt;&lt;td&gt;25.8110372&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;sd&lt;/td&gt;&lt;td&gt;27.71960396&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;mhr&lt;/td&gt;&lt;td&gt;28.95451413&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;ps&lt;/td&gt;&lt;td&gt;32.73647059&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;pnb&lt;/td&gt;&lt;td&gt;33.03592163&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;bgn&lt;/td&gt;&lt;td&gt;34.39934667&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;se&lt;/td&gt;&lt;td&gt;34.69274476&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;hy&lt;/td&gt;&lt;td&gt;35.02317597&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13&lt;/td&gt;&lt;td&gt;su&lt;/td&gt;&lt;td&gt;35.37706967&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;th&lt;/td&gt;&lt;td&gt;35.52957892&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;ce&lt;/td&gt;&lt;td&gt;35.6969602&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;mai&lt;/td&gt;&lt;td&gt;36.02093909&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;lv&lt;/td&gt;&lt;td&gt;36.14100906&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;gu&lt;/td&gt;&lt;td&gt;36.59380971&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;19&lt;/td&gt;&lt;td&gt;bcc&lt;/td&gt;&lt;td&gt;36.64866033&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;fy&lt;/td&gt;&lt;td&gt;37.60139287&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;nqo&lt;/td&gt;&lt;td&gt;37.94138834&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;he&lt;/td&gt;&lt;td&gt;37.95259865&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;23&lt;/td&gt;&lt;td&gt;en&lt;/td&gt;&lt;td&gt;38.04300371&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;ar&lt;/td&gt;&lt;td&gt;38.18569036&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;ckb&lt;/td&gt;&lt;td&gt;38.66867672&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;26&lt;/td&gt;&lt;td&gt;min&lt;/td&gt;&lt;td&gt;38.71156958&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;27&lt;/td&gt;&lt;td&gt;ses&lt;/td&gt;&lt;td&gt;38.87941712&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;28&lt;/td&gt;&lt;td&gt;jv&lt;/td&gt;&lt;td&gt;38.94753377&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;29&lt;/td&gt;&lt;td&gt;is&lt;/td&gt;&lt;td&gt;39.0652467&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;alt&lt;/td&gt;&lt;td&gt;39.39977435&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;31&lt;/td&gt;&lt;td&gt;az&lt;/td&gt;&lt;td&gt;39.4337931&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;kab&lt;/td&gt;&lt;td&gt;39.50967506&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;33&lt;/td&gt;&lt;td&gt;tk&lt;/td&gt;&lt;td&gt;39.54990758&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;mr&lt;/td&gt;&lt;td&gt;39.72049689&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;as&lt;/td&gt;&lt;td&gt;39.72080166&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;36&lt;/td&gt;&lt;td&gt;sw&lt;/td&gt;&lt;td&gt;39.73986071&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;37&lt;/td&gt;&lt;td&gt;km&lt;/td&gt;&lt;td&gt;39.77591036&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;38&lt;/td&gt;&lt;td&gt;azb&lt;/td&gt;&lt;td&gt;39.92411642&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;39&lt;/td&gt;&lt;td&gt;nn&lt;/td&gt;&lt;td&gt;39.96771069&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;yo&lt;/td&gt;&lt;td&gt;40.00503291&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;41&lt;/td&gt;&lt;td&gt;io&lt;/td&gt;&lt;td&gt;40.0528125&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;42&lt;/td&gt;&lt;td&gt;af&lt;/td&gt;&lt;td&gt;40.1640678&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;blk&lt;/td&gt;&lt;td&gt;40.2813059&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;sco&lt;/td&gt;&lt;td&gt;40.33289474&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;diq&lt;/td&gt;&lt;td&gt;40.33887373&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;yi&lt;/td&gt;&lt;td&gt;40.34033476&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;47&lt;/td&gt;&lt;td&gt;ur&lt;/td&gt;&lt;td&gt;40.39857651&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;48&lt;/td&gt;&lt;td&gt;ug-arab&lt;/td&gt;&lt;td&gt;40.53965184&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;49&lt;/td&gt;&lt;td&gt;da&lt;/td&gt;&lt;td&gt;40.55894826&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;my&lt;/td&gt;&lt;td&gt;40.67551519&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;51&lt;/td&gt;&lt;td&gt;kk-cyrl&lt;/td&gt;&lt;td&gt;40.87443182&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;guw&lt;/td&gt;&lt;td&gt;41.07080182&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;53&lt;/td&gt;&lt;td&gt;mg&lt;/td&gt;&lt;td&gt;41.08369028&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;54&lt;/td&gt;&lt;td&gt;sq&lt;/td&gt;&lt;td&gt;41.23219241&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;55&lt;/td&gt;&lt;td&gt;fa&lt;/td&gt;&lt;td&gt;41.27007299&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;56&lt;/td&gt;&lt;td&gt;or&lt;/td&gt;&lt;td&gt;41.27020202&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;ne&lt;/td&gt;&lt;td&gt;41.33971151&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;58&lt;/td&gt;&lt;td&gt;rue&lt;/td&gt;&lt;td&gt;41.40219378&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;59&lt;/td&gt;&lt;td&gt;lfn&lt;/td&gt;&lt;td&gt;41.54527278&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;lrc&lt;/td&gt;&lt;td&gt;41.61281337&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;61&lt;/td&gt;&lt;td&gt;sah&lt;/td&gt;&lt;td&gt;41.63293173&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;62&lt;/td&gt;&lt;td&gt;vi&lt;/td&gt;&lt;td&gt;41.74578313&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;63&lt;/td&gt;&lt;td&gt;awa&lt;/td&gt;&lt;td&gt;41.84093291&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;hi&lt;/td&gt;&lt;td&gt;41.9257885&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;si&lt;/td&gt;&lt;td&gt;41.93065693&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;66&lt;/td&gt;&lt;td&gt;te&lt;/td&gt;&lt;td&gt;41.99780915&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;67&lt;/td&gt;&lt;td&gt;mn&lt;/td&gt;&lt;td&gt;42.18728223&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;68&lt;/td&gt;&lt;td&gt;lki&lt;/td&gt;&lt;td&gt;42.21091396&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;69&lt;/td&gt;&lt;td&gt;bjn&lt;/td&gt;&lt;td&gt;42.57961538&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;sr-ec&lt;/td&gt;&lt;td&gt;42.67730151&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;71&lt;/td&gt;&lt;td&gt;cy&lt;/td&gt;&lt;td&gt;42.75020408&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;72&lt;/td&gt;&lt;td&gt;frr&lt;/td&gt;&lt;td&gt;42.92761394&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;73&lt;/td&gt;&lt;td&gt;vec&lt;/td&gt;&lt;td&gt;43.00573682&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;74&lt;/td&gt;&lt;td&gt;sr-el&lt;/td&gt;&lt;td&gt;43.13764389&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;75&lt;/td&gt;&lt;td&gt;nb&lt;/td&gt;&lt;td&gt;43.34987835&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;76&lt;/td&gt;&lt;td&gt;krc&lt;/td&gt;&lt;td&gt;43.54919554&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;77&lt;/td&gt;&lt;td&gt;ms&lt;/td&gt;&lt;td&gt;43.5553814&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;78&lt;/td&gt;&lt;td&gt;hr&lt;/td&gt;&lt;td&gt;43.55564807&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;79&lt;/td&gt;&lt;td&gt;eo&lt;/td&gt;&lt;td&gt;43.57477789&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;80&lt;/td&gt;&lt;td&gt;nds-nl&lt;/td&gt;&lt;td&gt;43.59060895&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;81&lt;/td&gt;&lt;td&gt;ka&lt;/td&gt;&lt;td&gt;43.60108696&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;82&lt;/td&gt;&lt;td&gt;ban&lt;/td&gt;&lt;td&gt;43.64178033&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;83&lt;/td&gt;&lt;td&gt;bs&lt;/td&gt;&lt;td&gt;43.681094&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;84&lt;/td&gt;&lt;td&gt;tt-cyrl&lt;/td&gt;&lt;td&gt;43.78230132&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;85&lt;/td&gt;&lt;td&gt;xmf&lt;/td&gt;&lt;td&gt;43.80860161&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;86&lt;/td&gt;&lt;td&gt;et&lt;/td&gt;&lt;td&gt;43.96494239&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;87&lt;/td&gt;&lt;td&gt;ba&lt;/td&gt;&lt;td&gt;43.99432099&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;88&lt;/td&gt;&lt;td&gt;tr&lt;/td&gt;&lt;td&gt;44.17996604&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;89&lt;/td&gt;&lt;td&gt;bn&lt;/td&gt;&lt;td&gt;44.28768449&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;90&lt;/td&gt;&lt;td&gt;bew&lt;/td&gt;&lt;td&gt;44.44706174&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;91&lt;/td&gt;&lt;td&gt;sv&lt;/td&gt;&lt;td&gt;44.49027333&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;92&lt;/td&gt;&lt;td&gt;sa&lt;/td&gt;&lt;td&gt;44.58670931&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;93&lt;/td&gt;&lt;td&gt;cs&lt;/td&gt;&lt;td&gt;44.59026764&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;94&lt;/td&gt;&lt;td&gt;ta&lt;/td&gt;&lt;td&gt;44.62803055&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;95&lt;/td&gt;&lt;td&gt;mt&lt;/td&gt;&lt;td&gt;44.70207417&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;96&lt;/td&gt;&lt;td&gt;lt&lt;/td&gt;&lt;td&gt;44.7615&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;97&lt;/td&gt;&lt;td&gt;roa-tara&lt;/td&gt;&lt;td&gt;44.79812466&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;98&lt;/td&gt;&lt;td&gt;fit&lt;/td&gt;&lt;td&gt;44.79824561&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;99&lt;/td&gt;&lt;td&gt;dsb&lt;/td&gt;&lt;td&gt;44.9151957&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;hsb&lt;/td&gt;&lt;td&gt;44.96197228&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;101&lt;/td&gt;&lt;td&gt;br&lt;/td&gt;&lt;td&gt;44.98873461&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;102&lt;/td&gt;&lt;td&gt;sh-latn&lt;/td&gt;&lt;td&gt;45.00976709&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;103&lt;/td&gt;&lt;td&gt;fi&lt;/td&gt;&lt;td&gt;45.1222031&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;104&lt;/td&gt;&lt;td&gt;hu&lt;/td&gt;&lt;td&gt;45.17139303&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;105&lt;/td&gt;&lt;td&gt;sk&lt;/td&gt;&lt;td&gt;45.35804702&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;106&lt;/td&gt;&lt;td&gt;lb&lt;/td&gt;&lt;td&gt;45.39073034&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;107&lt;/td&gt;&lt;td&gt;li&lt;/td&gt;&lt;td&gt;45.5539548&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;108&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;td&gt;45.56471159&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;109&lt;/td&gt;&lt;td&gt;gsw&lt;/td&gt;&lt;td&gt;45.63605209&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;110&lt;/td&gt;&lt;td&gt;sl&lt;/td&gt;&lt;td&gt;45.75350606&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;111&lt;/td&gt;&lt;td&gt;be&lt;/td&gt;&lt;td&gt;45.80325&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;112&lt;/td&gt;&lt;td&gt;oc&lt;/td&gt;&lt;td&gt;45.85709988&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;113&lt;/td&gt;&lt;td&gt;mk&lt;/td&gt;&lt;td&gt;45.90943939&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;114&lt;/td&gt;&lt;td&gt;bcl&lt;/td&gt;&lt;td&gt;45.97070064&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;115&lt;/td&gt;&lt;td&gt;scn&lt;/td&gt;&lt;td&gt;46.11905532&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;116&lt;/td&gt;&lt;td&gt;an&lt;/td&gt;&lt;td&gt;46.14892665&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;117&lt;/td&gt;&lt;td&gt;uk&lt;/td&gt;&lt;td&gt;46.22955524&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;118&lt;/td&gt;&lt;td&gt;qu&lt;/td&gt;&lt;td&gt;46.30301842&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;119&lt;/td&gt;&lt;td&gt;eu&lt;/td&gt;&lt;td&gt;46.33589404&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;120&lt;/td&gt;&lt;td&gt;lij&lt;/td&gt;&lt;td&gt;46.660536&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;121&lt;/td&gt;&lt;td&gt;pl&lt;/td&gt;&lt;td&gt;46.76863316&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;122&lt;/td&gt;&lt;td&gt;hrx&lt;/td&gt;&lt;td&gt;46.79802761&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;123&lt;/td&gt;&lt;td&gt;ast&lt;/td&gt;&lt;td&gt;46.87204161&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;124&lt;/td&gt;&lt;td&gt;nap&lt;/td&gt;&lt;td&gt;46.93783147&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;125&lt;/td&gt;&lt;td&gt;ru&lt;/td&gt;&lt;td&gt;47.02326139&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;126&lt;/td&gt;&lt;td&gt;bg&lt;/td&gt;&lt;td&gt;47.03590259&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;127&lt;/td&gt;&lt;td&gt;be-tarask&lt;/td&gt;&lt;td&gt;47.28525242&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;128&lt;/td&gt;&lt;td&gt;hif-latn&lt;/td&gt;&lt;td&gt;47.41652614&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;129&lt;/td&gt;&lt;td&gt;tl&lt;/td&gt;&lt;td&gt;47.51263001&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;130&lt;/td&gt;&lt;td&gt;rm&lt;/td&gt;&lt;td&gt;47.60741067&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;131&lt;/td&gt;&lt;td&gt;pms&lt;/td&gt;&lt;td&gt;47.69805527&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;132&lt;/td&gt;&lt;td&gt;pt-br&lt;/td&gt;&lt;td&gt;47.84063647&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;133&lt;/td&gt;&lt;td&gt;ca&lt;/td&gt;&lt;td&gt;47.92468307&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;134&lt;/td&gt;&lt;td&gt;ro&lt;/td&gt;&lt;td&gt;48.22437186&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;135&lt;/td&gt;&lt;td&gt;nl&lt;/td&gt;&lt;td&gt;48.4175636&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;136&lt;/td&gt;&lt;td&gt;ia&lt;/td&gt;&lt;td&gt;48.48612816&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;137&lt;/td&gt;&lt;td&gt;it&lt;/td&gt;&lt;td&gt;48.52347014&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;138&lt;/td&gt;&lt;td&gt;frp&lt;/td&gt;&lt;td&gt;48.54542755&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;139&lt;/td&gt;&lt;td&gt;gl&lt;/td&gt;&lt;td&gt;48.57820482&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;140&lt;/td&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;49.12108224&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;141&lt;/td&gt;&lt;td&gt;es&lt;/td&gt;&lt;td&gt;49.21062944&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;142&lt;/td&gt;&lt;td&gt;pt&lt;/td&gt;&lt;td&gt;49.63085602&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;143&lt;/td&gt;&lt;td&gt;de&lt;/td&gt;&lt;td&gt;49.77225067&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;144&lt;/td&gt;&lt;td&gt;szy&lt;/td&gt;&lt;td&gt;49.84650877&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;145&lt;/td&gt;&lt;td&gt;shn&lt;/td&gt;&lt;td&gt;49.92356241&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;146&lt;/td&gt;&lt;td&gt;fr&lt;/td&gt;&lt;td&gt;50.15585031&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;147&lt;/td&gt;&lt;td&gt;lmo&lt;/td&gt;&lt;td&gt;50.85627837&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;148&lt;/td&gt;&lt;td&gt;ilo&lt;/td&gt;&lt;td&gt;50.9798995&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;149&lt;/td&gt;&lt;td&gt;el&lt;/td&gt;&lt;td&gt;51.14834894&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;150&lt;/td&gt;&lt;td&gt;gd&lt;/td&gt;&lt;td&gt;51.72994269&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;151&lt;/td&gt;&lt;td&gt;ksh&lt;/td&gt;&lt;td&gt;53.36332609&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;p&gt;The Python 3 code I’ve used to create the table. You can run in the root directory of the core MediaWiki source tree. It’s horrible, please improve it!&lt;/p&gt;


&lt;div class=&quot;wp-block-syntaxhighlighter-code &quot;&gt;&lt;pre class=&quot;brush: python; title: ; notranslate&quot;&gt;import json
import os
import re

languages = {}
code_re = re.compile(r&quot;(?P&amp;lt;code&amp;gt;[^/]+)\.json$&quot;)


def process_file(filename):
    code_search = code_re.search(filename)
    code = code_search.group(&quot;code&quot;)
    if code in ('qqq', 'ti', 'lzh', 'yue-hant'):
        return

    with open(filename, &quot;r&quot;, encoding=&quot;utf-8&quot;) as file:
        data = json.load(file)
        del(data['@metadata'])
        average_unicode_length(code, data)


def average_unicode_length(language, translations):
    total_translations = len(translations)
    if total_translations &amp;lt; 2200:
        print('Language ' + language + ' has fewer than 2200 translations')
        return

    total_length = 0

    for translation in translations.values():
        if len(translation) &amp;lt; 300:
            total_length += len(translation)

    # Calculate the average length
    average_length = total_length / total_translations
    languages[language] = average_length

root = &quot;./languages/i18n/&quot;
for file in os.listdir(root):
    if file.endswith(&quot;.json&quot;):
        path = os.path.join(root, file)
        process_file(path)

sorted_languages = sorted(
    languages.items(),
    key=lambda item: item[1]
)

# Print the sorted items
for code, length in sorted_languages:
    print(code, '\t', length)

&lt;/pre&gt;&lt;/div&gt;</content>
		<author>
			<name>aharoni</name>
			<uri>https://aharoni.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Free Software – Aharoni in Unicode</title>
			<subtitle type="html">Treacle tarts for great justice</subtitle>
			<link rel="self" href="https://aharoni.wordpress.com/category/free-software/feed/atom/"/>
			<id>http://aharoni.wordpress.com/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">הסתיימה חלוקת כרטיסים חינם מעמותת &quot;המקור&quot; לכנס Core C++ 2023!</title>
		<link href="https://www.hamakor.org.il/2023/06/01/%d7%94%d7%a1%d7%aa%d7%99%d7%99%d7%9e%d7%94-%d7%97%d7%9c%d7%95%d7%a7%d7%aa-%d7%9b%d7%a8%d7%98%d7%99%d7%a1%d7%99%d7%9d-%d7%97%d7%99%d7%a0%d7%9d-%d7%9e%d7%a2%d7%9e%d7%95%d7%aa%d7%aa-%d7%94%d7%9e%d7%a7/"/>
		<id>https://www.hamakor.org.il/?p=1881</id>
		<updated>2023-06-01T13:20:03+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;תודה לכל מי שנרשם לקבלת כרטיסים, וברכות לזוכים המאושרים!&lt;/p&gt;



&lt;p&gt;אם לא זכיתם בכרטיס חינם, מוזמנים לרכוש כרטיס ב-10% הנחה, כאן:&lt;br /&gt;&lt;a href=&quot;https://ti.to/hamakor/core-cpp-2023/discount/last-minute&quot;&gt;https://ti.to/hamakor/core-cpp-2023/discount/last-minute&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;השנה הכנס בהשתתפות ממציא שפת ++C, ביארנה סטרוסטרופ, בנוסף לשורה ארוכה של מרצים מעולים. לתוכניה המלאה: &lt;a href=&quot;https://corecpp.org/schedule/&quot;&gt;https://corecpp.org/schedule/&lt;/a&gt;&lt;br /&gt;(הכנס מתקיים ביוני, 5-7 בסנימטק תל אביב, רחוב הארבעה 5)&lt;/p&gt;



&lt;p&gt;מומלץ למהר ולרכוש, כי נותרו כרטיסים אחרונים בהחלט!&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;a2a_button_facebook&quot; href=&quot;https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F06%2F01%2F%25d7%2594%25d7%25a1%25d7%25aa%25d7%2599%25d7%2599%25d7%259e%25d7%2594-%25d7%2597%25d7%259c%25d7%2595%25d7%25a7%25d7%25aa-%25d7%259b%25d7%25a8%25d7%2598%25d7%2599%25d7%25a1%25d7%2599%25d7%259d-%25d7%2597%25d7%2599%25d7%25a0%25d7%259d-%25d7%259e%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%25aa-%25d7%2594%25d7%259e%25d7%25a7%2F&amp;amp;linkname=%D7%94%D7%A1%D7%AA%D7%99%D7%99%D7%9E%D7%94%20%D7%97%D7%9C%D7%95%D7%A7%D7%AA%20%D7%9B%D7%A8%D7%98%D7%99%D7%A1%D7%99%D7%9D%20%D7%97%D7%99%D7%A0%D7%9D%20%D7%9E%D7%A2%D7%9E%D7%95%D7%AA%D7%AA%20%22%D7%94%D7%9E%D7%A7%D7%95%D7%A8%22%20%D7%9C%D7%9B%D7%A0%D7%A1%20Core%20C%2B%2B%202023%21&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Facebook&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_twitter&quot; href=&quot;https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F06%2F01%2F%25d7%2594%25d7%25a1%25d7%25aa%25d7%2599%25d7%2599%25d7%259e%25d7%2594-%25d7%2597%25d7%259c%25d7%2595%25d7%25a7%25d7%25aa-%25d7%259b%25d7%25a8%25d7%2598%25d7%2599%25d7%25a1%25d7%2599%25d7%259d-%25d7%2597%25d7%2599%25d7%25a0%25d7%259d-%25d7%259e%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%25aa-%25d7%2594%25d7%259e%25d7%25a7%2F&amp;amp;linkname=%D7%94%D7%A1%D7%AA%D7%99%D7%99%D7%9E%D7%94%20%D7%97%D7%9C%D7%95%D7%A7%D7%AA%20%D7%9B%D7%A8%D7%98%D7%99%D7%A1%D7%99%D7%9D%20%D7%97%D7%99%D7%A0%D7%9D%20%D7%9E%D7%A2%D7%9E%D7%95%D7%AA%D7%AA%20%22%D7%94%D7%9E%D7%A7%D7%95%D7%A8%22%20%D7%9C%D7%9B%D7%A0%D7%A1%20Core%20C%2B%2B%202023%21&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Twitter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_telegram&quot; href=&quot;https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F06%2F01%2F%25d7%2594%25d7%25a1%25d7%25aa%25d7%2599%25d7%2599%25d7%259e%25d7%2594-%25d7%2597%25d7%259c%25d7%2595%25d7%25a7%25d7%25aa-%25d7%259b%25d7%25a8%25d7%2598%25d7%2599%25d7%25a1%25d7%2599%25d7%259d-%25d7%2597%25d7%2599%25d7%25a0%25d7%259d-%25d7%259e%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%25aa-%25d7%2594%25d7%259e%25d7%25a7%2F&amp;amp;linkname=%D7%94%D7%A1%D7%AA%D7%99%D7%99%D7%9E%D7%94%20%D7%97%D7%9C%D7%95%D7%A7%D7%AA%20%D7%9B%D7%A8%D7%98%D7%99%D7%A1%D7%99%D7%9D%20%D7%97%D7%99%D7%A0%D7%9D%20%D7%9E%D7%A2%D7%9E%D7%95%D7%AA%D7%AA%20%22%D7%94%D7%9E%D7%A7%D7%95%D7%A8%22%20%D7%9C%D7%9B%D7%A0%D7%A1%20Core%20C%2B%2B%202023%21&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Telegram&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_dd addtoany_share_save addtoany_share&quot; href=&quot;https://www.addtoany.com/share#url=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F06%2F01%2F%25d7%2594%25d7%25a1%25d7%25aa%25d7%2599%25d7%2599%25d7%259e%25d7%2594-%25d7%2597%25d7%259c%25d7%2595%25d7%25a7%25d7%25aa-%25d7%259b%25d7%25a8%25d7%2598%25d7%2599%25d7%25a1%25d7%2599%25d7%259d-%25d7%2597%25d7%2599%25d7%25a0%25d7%259d-%25d7%259e%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%25aa-%25d7%2594%25d7%259e%25d7%25a7%2F&amp;amp;title=%D7%94%D7%A1%D7%AA%D7%99%D7%99%D7%9E%D7%94%20%D7%97%D7%9C%D7%95%D7%A7%D7%AA%20%D7%9B%D7%A8%D7%98%D7%99%D7%A1%D7%99%D7%9D%20%D7%97%D7%99%D7%A0%D7%9D%20%D7%9E%D7%A2%D7%9E%D7%95%D7%AA%D7%AA%20%22%D7%94%D7%9E%D7%A7%D7%95%D7%A8%22%20%D7%9C%D7%9B%D7%A0%D7%A1%20Core%20C%2B%2B%202023%21&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;https://www.hamakor.org.il/2023/06/01/%d7%94%d7%a1%d7%aa%d7%99%d7%99%d7%9e%d7%94-%d7%97%d7%9c%d7%95%d7%a7%d7%aa-%d7%9b%d7%a8%d7%98%d7%99%d7%a1%d7%99%d7%9d-%d7%97%d7%99%d7%a0%d7%9d-%d7%9e%d7%a2%d7%9e%d7%95%d7%aa%d7%aa-%d7%94%d7%9e%d7%a7/&quot;&gt;הסתיימה חלוקת כרטיסים חינם מעמותת &quot;המקור&quot; לכנס Core C++ 2023!&lt;/a&gt; first appeared on &lt;a href=&quot;https://www.hamakor.org.il&quot;&gt;המקור&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Inbal Levi</name>
			<uri>https://www.hamakor.org.il</uri>
		</author>
		<source>
			<title type="html">המקור</title>
			<subtitle type="html">עמותה ישראלית לתוכנה חופשית ולקוד-מקור פתוח (ע&quot;ר)</subtitle>
			<link rel="self" href="https://www.hamakor.org.il/feed/atom/"/>
			<id>https://www.hamakor.org.il/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">הזמנה לאסיפה כללית של העמותה – 28.5.23</title>
		<link href="https://www.hamakor.org.il/2023/05/02/%d7%94%d7%96%d7%9e%d7%a0%d7%94-%d7%9c%d7%90%d7%a1%d7%99%d7%a4%d7%94-%d7%9b%d7%9c%d7%9c%d7%99%d7%aa-%d7%a9%d7%9c-%d7%94%d7%a2%d7%9e%d7%95%d7%aa%d7%94-28-5-23/"/>
		<id>https://www.hamakor.org.il/?p=1866</id>
		<updated>2023-05-28T13:04:36+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;שלום לחברי וחברות עמותת המקור, ידידים וידידות, ושותפים ושותפות לדרך,&lt;/p&gt;



&lt;p&gt;בתאריך 28.5.23, ביום ראשון בשעה 18:00 (בתחילת מיטאפ &quot;המקור&quot;) תכונס אסיפה כללית של עמותת המקור – עמותה ישראלית לתוכנה חופשית וקוד מקור פתוח (ע&quot;ר). &lt;/p&gt;



&lt;p&gt;&lt;strong&gt;שימו לב: האסיפה פתוחה לכלל חברי העמותה, ולא רק למשתתפי המיטאפ&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;האסיפה תתקיים:&lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;בחלל Brain Embassy (רחוב השלושה 2) בתל אביב, בשעה 18:00 ביום ראשון ה-28.5 &lt;br /&gt;(מגדל Adgar360, קומת קרקע מגדל A, אולם כנסים)&lt;/li&gt;



&lt;li&gt;אונליין דרך זום – &lt;a href=&quot;https://us02web.zoom.us/j/82678577601?pwd=blZUdHlnTnJQcVdwWjRSRGJ5bnlwZz09&quot;&gt;קישור להתחברות לזום&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;לוח זמנים:&lt;/p&gt;



&lt;ul&gt;
&lt;li&gt;18:30 – פתיחת האסיפה&lt;/li&gt;



&lt;li&gt;18:40 – 18:30 – הצגת פעילות העמותה&lt;/li&gt;



&lt;li&gt;19:00 – 18:40 – הצגת הדוחות הכספיים לשנת 2022 ואישורם&lt;/li&gt;



&lt;li&gt;19:20 – 19:00 – דיון פתוח בנושא יוזמות לפעילות העמותה&lt;/li&gt;



&lt;li&gt;19:20 – סיום ופתיחת המיטאפ&lt;/li&gt;
&lt;/ul&gt;



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



&lt;p&gt;פרטים טכניים:&lt;/p&gt;



&lt;p&gt;טיוטות הדוחות יועברו לעיון החברים לפני האסיפה. אנו מקווים שדיון עליהם, או על כל נושא אחר בסדר היום, &lt;a href=&quot;https://forum.hamakor.org.il/c/organization/7&quot;&gt;יתקיים בפורומים של העמותה&lt;/a&gt;, בכתב, לפני האסיפה. זאת, הן משיקולי אסינכרוניות והן משיקולי חיסכון בזמן באסיפה.&lt;/p&gt;



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



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



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



&lt;p&gt;אנו מזכירים לכולם לשלם את דמי החבר לעמותה. הודעה על מצב התשלום תצא לחברי וחברות העמותה. &lt;/p&gt;



&lt;p&gt;לנוחיותכם קישור ל&lt;a href=&quot;https://www.hamakor.org.il/join/&quot;&gt;הצטרפות כידידי/חברי העמותה ולשדרוג מעמד מידיד/ת לחבר/ת העמותה&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;בברכה,&lt;/p&gt;



&lt;p&gt;ועד עמותת המקור&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;a2a_button_facebook&quot; href=&quot;https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F05%2F02%2F%25d7%2594%25d7%2596%25d7%259e%25d7%25a0%25d7%2594-%25d7%259c%25d7%2590%25d7%25a1%25d7%2599%25d7%25a4%25d7%2594-%25d7%259b%25d7%259c%25d7%259c%25d7%2599%25d7%25aa-%25d7%25a9%25d7%259c-%25d7%2594%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%2594-28-5-23%2F&amp;amp;linkname=%D7%94%D7%96%D7%9E%D7%A0%D7%94%20%D7%9C%D7%90%D7%A1%D7%99%D7%A4%D7%94%20%D7%9B%D7%9C%D7%9C%D7%99%D7%AA%20%D7%A9%D7%9C%20%D7%94%D7%A2%D7%9E%D7%95%D7%AA%D7%94%20%E2%80%93%2028.5.23&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Facebook&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_twitter&quot; href=&quot;https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F05%2F02%2F%25d7%2594%25d7%2596%25d7%259e%25d7%25a0%25d7%2594-%25d7%259c%25d7%2590%25d7%25a1%25d7%2599%25d7%25a4%25d7%2594-%25d7%259b%25d7%259c%25d7%259c%25d7%2599%25d7%25aa-%25d7%25a9%25d7%259c-%25d7%2594%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%2594-28-5-23%2F&amp;amp;linkname=%D7%94%D7%96%D7%9E%D7%A0%D7%94%20%D7%9C%D7%90%D7%A1%D7%99%D7%A4%D7%94%20%D7%9B%D7%9C%D7%9C%D7%99%D7%AA%20%D7%A9%D7%9C%20%D7%94%D7%A2%D7%9E%D7%95%D7%AA%D7%94%20%E2%80%93%2028.5.23&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Twitter&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_button_telegram&quot; href=&quot;https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F05%2F02%2F%25d7%2594%25d7%2596%25d7%259e%25d7%25a0%25d7%2594-%25d7%259c%25d7%2590%25d7%25a1%25d7%2599%25d7%25a4%25d7%2594-%25d7%259b%25d7%259c%25d7%259c%25d7%2599%25d7%25aa-%25d7%25a9%25d7%259c-%25d7%2594%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%2594-28-5-23%2F&amp;amp;linkname=%D7%94%D7%96%D7%9E%D7%A0%D7%94%20%D7%9C%D7%90%D7%A1%D7%99%D7%A4%D7%94%20%D7%9B%D7%9C%D7%9C%D7%99%D7%AA%20%D7%A9%D7%9C%20%D7%94%D7%A2%D7%9E%D7%95%D7%AA%D7%94%20%E2%80%93%2028.5.23&quot; rel=&quot;nofollow noopener&quot; target=&quot;_blank&quot; title=&quot;Telegram&quot;&gt;&lt;/a&gt;&lt;a class=&quot;a2a_dd addtoany_share_save addtoany_share&quot; href=&quot;https://www.addtoany.com/share#url=https%3A%2F%2Fwww.hamakor.org.il%2F2023%2F05%2F02%2F%25d7%2594%25d7%2596%25d7%259e%25d7%25a0%25d7%2594-%25d7%259c%25d7%2590%25d7%25a1%25d7%2599%25d7%25a4%25d7%2594-%25d7%259b%25d7%259c%25d7%259c%25d7%2599%25d7%25aa-%25d7%25a9%25d7%259c-%25d7%2594%25d7%25a2%25d7%259e%25d7%2595%25d7%25aa%25d7%2594-28-5-23%2F&amp;amp;title=%D7%94%D7%96%D7%9E%D7%A0%D7%94%20%D7%9C%D7%90%D7%A1%D7%99%D7%A4%D7%94%20%D7%9B%D7%9C%D7%9C%D7%99%D7%AA%20%D7%A9%D7%9C%20%D7%94%D7%A2%D7%9E%D7%95%D7%AA%D7%94%20%E2%80%93%2028.5.23&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;https://www.hamakor.org.il/2023/05/02/%d7%94%d7%96%d7%9e%d7%a0%d7%94-%d7%9c%d7%90%d7%a1%d7%99%d7%a4%d7%94-%d7%9b%d7%9c%d7%9c%d7%99%d7%aa-%d7%a9%d7%9c-%d7%94%d7%a2%d7%9e%d7%95%d7%aa%d7%94-28-5-23/&quot;&gt;הזמנה לאסיפה כללית של העמותה – 28.5.23&lt;/a&gt; first appeared on &lt;a href=&quot;https://www.hamakor.org.il&quot;&gt;המקור&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Inbal Levi</name>
			<uri>https://www.hamakor.org.il</uri>
		</author>
		<source>
			<title type="html">המקור</title>
			<subtitle type="html">עמותה ישראלית לתוכנה חופשית ולקוד-מקור פתוח (ע&quot;ר)</subtitle>
			<link rel="self" href="https://www.hamakor.org.il/feed/atom/"/>
			<id>https://www.hamakor.org.il/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Things that don’t work well with MySQL’s FOREIGN KEY implementation</title>
		<link href="https://code.openark.org/blog/mysql/things-that-dont-work-well-with-mysqls-foreign-key-implementation"/>
		<id>https://code.openark.org/blog/?p=8226</id>
		<updated>2023-05-02T04:01:54+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;Foreign keys are an important database construct, that let you keep an aspect of data integrity within your relational model. Data integrity has many faces, most of which are application-specific. Foreign keys let you maintain an association integrity between rows in two tables, one being the &lt;em&gt;parent&lt;/em&gt;, the other being the &lt;em&gt;child&lt;/em&gt;. I’ve personally mostly avoided using foreign keys in MySQL for many years in my professional work, for several reasons. I’d like to now highlight things I find to be wrong/broken with the MySQL implementation.&lt;/p&gt;
&lt;p&gt;But, first, as in the past this caused some confusion: when I say I’m not using foreign keys, that does not mean I don’t &lt;code&gt;JOIN&lt;/code&gt; tables. I still &lt;code&gt;JOIN&lt;/code&gt; tables. I still have some &lt;code&gt;id&lt;/code&gt; column in one table and some &lt;code&gt;parent_id&lt;/code&gt; in another. I still use the benefit of the relational model. In a sense, I do use foreign keys. What I don’t normally is the foreign key &lt;code&gt;CONSTRAINT&lt;/code&gt;, i.e. the declaration of a &lt;code&gt;CONSTRAINT some_fk FOREIGN KEY ...&lt;/code&gt; in a table’s definition.&lt;/p&gt;
&lt;p&gt;So here are things I consider to be broken, either specific to the MySQL implementation, or in the general concept. Some are outright deal breakers for environments I’ve worked with. Others are things to work around. In no particular order:&lt;/p&gt;
&lt;h2&gt;No binary log entries for cascaded writes&lt;/h2&gt;
&lt;p&gt;I think there are many people unaware of this. In a way, MySQL doesn’t really support foreign keys. The InnoDB engine does. This is old history, from before InnoDB was even officially a MySQL technology, and was developed independently as a 3rd party product. There was a time when MySQL sought alternative engines. There was a time when there was a plan to implement foreign keys in MySQL, above the storage engine level. But as history goes, MySQL and InnoDB both became one with Oracle acquiring both, and I’m only guessing implementing foreign keys in MySQL became lower priority, to be eventually abandoned.&lt;/p&gt;
&lt;p&gt;Alas, the fact foreign keys are implemented in the storage engine level has dire consequences. The engine does not have direct access to the binary log. If you create a foreign key constraint with &lt;code&gt;ON DELETE|UPDATE&lt;/code&gt; of &lt;code&gt;SET NULL&lt;/code&gt; or &lt;code&gt;CASCADE&lt;/code&gt;, you should be aware that cascaded operations are never written to the binary log. Consider these two tables:&lt;span id=&quot;more-8226&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;CREATE TABLE `parent_table` (
  `id` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE `child_table` (
  `id` int NOT NULL,
  `parent_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id_idx` (`parent_id`),
  CONSTRAINT `child_parent_fk` FOREIGN KEY (`parent_id`) REFERENCES `parent_table` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB;

insert into parent_table values (1);
insert into child_table values (1, 1);
insert into child_table values (2, 1);
&lt;/pre&gt;
&lt;p&gt;If you were to &lt;code&gt;DELETE FROM parent_table WHERE id=1&lt;/code&gt;, then the two rows in &lt;code&gt;child_table&lt;/code&gt; are also deleted, due to the &lt;code&gt;CASCADE&lt;/code&gt; rule. However, only the &lt;code&gt;parent_table&lt;/code&gt; deleted row is written in the binary log. The two &lt;code&gt;child_table&lt;/code&gt; rows are deleted internally by the InnoDB engine. The assumption is that when a replica applies the &lt;code&gt;DELETE&lt;/code&gt; on &lt;code&gt;parent_table&lt;/code&gt; the replica’s own InnoDB engine will likewise delete the two relevant &lt;code&gt;child_table&lt;/code&gt; rows.&lt;/p&gt;
&lt;p&gt;Fair assumption. But we lose information along the way. As Change Data Captures are becoming more and more common, and as we stream changes from MySQL to other data stores, the &lt;code&gt;DELETE&lt;/code&gt;s on &lt;code&gt;child_table&lt;/code&gt; are never reflected and cannot be captured.&lt;/p&gt;
&lt;h2&gt;Online DDL, aka online schema changes&lt;/h2&gt;
&lt;p&gt;I’ve &lt;a href=&quot;http://code.openark.org/blog/mysql/the-problem-with-mysql-foreign-key-constraints-in-online-schema-changes&quot;&gt;written about this at length&lt;/a&gt; in the past. But even that write up is incomplete!&lt;/p&gt;
&lt;p&gt;MySQL is pushing towards &lt;code&gt;INSTANT&lt;/code&gt; DDL, which is a wonderful thing. With &lt;code&gt;8.0.29&lt;/code&gt;, even more schema change operations are supported by &lt;code&gt;ALGORITHM=INSTANT&lt;/code&gt;. But, there’s still quite a lot of operations unsupported yet, and until such time that &lt;code&gt;INSTANT&lt;/code&gt; DDL supports all (or at least all common) schema changes, Online Schema Change tools like &lt;code&gt;gh-ost&lt;/code&gt;, &lt;code&gt;pt-online-schema-change&lt;/code&gt;, and &lt;code&gt;Vitess&lt;/code&gt; (disclaimer: I’m a &lt;code&gt;Vitess&lt;/code&gt; maintainer and actively developing &lt;code&gt;Vitess'&lt;/code&gt;s Online DDL), are essential when it comes to production changes.&lt;/p&gt;
&lt;p&gt;Both &lt;code&gt;Vitess&lt;/code&gt; and &lt;code&gt;gh-ost&lt;/code&gt; tail the binary logs to capture changes to the table. In light of the previous section, it is impossible to run such an Online Schema Change operation on a foreign key child table that has either &lt;code&gt;SET NULL&lt;/code&gt; or &lt;code&gt;CASCADE&lt;/code&gt; rule. The changes to the table are never reflected in the binary log. &lt;code&gt;pt-online-schema-change&lt;/code&gt; is also unable to detect those changes as there’s nothing to invoke the triggers.&lt;/p&gt;
&lt;p&gt;Then, please do go ahead and read &lt;a href=&quot;http://code.openark.org/blog/mysql/the-problem-with-mysql-foreign-key-constraints-in-online-schema-changes&quot; rel=&quot;bookmark&quot;&gt;The problem with MySQL foreign key constraints in Online Schema Changes&lt;/a&gt;, as it goes deep into what it otherwise means to deal with FK constraints in Online DDL, as it cannot fit in this post.&lt;/p&gt;
&lt;h2&gt;Locked data types&lt;/h2&gt;
&lt;p&gt;In the above table definitions, &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;parent_id&lt;/code&gt; are &lt;code&gt;int&lt;/code&gt;. As data grows, I might realize the choice of data type was wrong. I really should have used &lt;code&gt;bigint unsigned&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Alas, it is &lt;em&gt;impossible&lt;/em&gt; to change the data type in either &lt;code&gt;parent_table&lt;/code&gt; or &lt;code&gt;child_table&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&amp;gt; alter table parent_table modify column id bigint unsigned;
ERROR 3780 (HY000): Referencing column 'parent_id' and referenced column 'id' in foreign key constraint 'child_parent_fk' are incompatible.

&amp;gt; alter table child_table modify column parent_id bigint unsigned;
ERROR 3780 (HY000): Referencing column 'parent_id' and referenced column 'id' in foreign key constraint 'child_parent_fk' are incompatible.
&lt;/pre&gt;
&lt;p&gt;It’s impossible to do that with straight-DDL (never mind &lt;code&gt;INSTANT&lt;/code&gt;), and it’s impossible to do that with Online DDL. InnoDB (not MySQL) flatly refuses to accept any change in the related columns’s data type. Well, it’s not really about &lt;i&gt;changing&lt;/i&gt; them as it is about having an &lt;i&gt;incompatibility&lt;/i&gt;. But then, we can’t change either. The column type changes are only made possible if we modify the child table to remove the foreign key constraint, then alter both parent and child to modify the respective columns types, then re-add the foreign key constraint. There are four different &lt;code&gt;ALTER TABLE&lt;/code&gt; statements. Neither removing nor adding a foreign key constraint is supported in &lt;code&gt;INSTANT&lt;/code&gt; algorithm, so you can expect a long time in which the foreign key relationship simply does not exist!&lt;/p&gt;
&lt;h2&gt;CREATE TABLE … LIKE&lt;/h2&gt;
&lt;p&gt;One of those quirks that come with InnoDB owning the foreign key definition, is that &lt;code&gt;CREATE TABLE ... LIKE&lt;/code&gt; does not generate foreign keys. I think this is mostly an oversight. A &lt;code&gt;SHOW CREATE TABLE&lt;/code&gt; statement does produce foreign key output, so I’m not sure why &lt;code&gt;CREATE TABLE ... LIKE&lt;/code&gt; doesn’t. Continuing our above &lt;code&gt;child_table&lt;/code&gt; example:&lt;/p&gt;
&lt;pre&gt;&amp;gt; create table child_table_copy like child_table;
Query OK, 0 rows affected (0.06 sec)

&amp;gt; show create table child_table_copy \G
*************************** 1. row ***************************
       Table: child_table_copy
Create Table: CREATE TABLE `child_table_copy` (
  `id` int NOT NULL,
  `parent_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id_idx` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
&lt;/pre&gt;
&lt;h2&gt;Unique constraint names&lt;/h2&gt;
&lt;p&gt;I know this is ANSI SQL, and so I won’t fault MySQL for this. I do think this is one of those scenarios where deviating from ANSI SQL would be beneficial. A foreign key constraint has a name (if you don’t provide one, one is auto-generated for you). And, that name, according to ANSI SQL, has to be unique across your schema. It means the following table conflicts with our original &lt;code&gt;child_table&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;CREATE TABLE `another_child_table` (
  `id` int NOT NULL,
  `parent_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id_idx` (`parent_id`),
  CONSTRAINT `child_parent_fk` FOREIGN KEY (`parent_id`) REFERENCES `parent_table` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
&lt;/pre&gt;
&lt;p&gt;You can’t have two foreign key constraints both named &lt;code&gt;child_parent_fk&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I never understood that limitation. See, it’s just fine the tables both have a key named &lt;code&gt;parent_id_idx&lt;/code&gt;. No conflict about that. Why do foreign keys have to have unique names?&lt;/p&gt;
&lt;p&gt;Maybe, in ANSI SQL, foreign keys can be independent constructs, living outside the table scope. Meh, even so this could be technically solved using some sort of namespace. But, in MySQL this isn’t the case in the first place. Foreign keys are part of the table definition.&lt;/p&gt;
&lt;p&gt;This is again just painful for Online DDL, or for any automation that tries to duplicate tables on the fly.&lt;/p&gt;
&lt;h2&gt;Lack of declarative-only definitions&lt;/h2&gt;
&lt;p&gt;This is more of a “I wish this existed” rather than “this is wrong”. One of the greatest benefits of foreign keys is the &lt;em&gt;graph&lt;/em&gt;. Given a schema with foreign keys, you can formally analyze the relationships between tables. You can draw the dependency graph. It’s really educating.&lt;/p&gt;
&lt;p&gt;What I wish for is to have a declarative-only foreign key definition. One that does not actually &lt;em&gt;enforce&lt;/em&gt; anything. Merely indicates an association. Something like so:&lt;/p&gt;
&lt;pre&gt;CREATE TABLE `child_table` (
  `id` int NOT NULL,
  `parent_id` int DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id_idx` (`parent_id`),
  DECLARATIVE FOREIGN KEY (`parent_id`) REFERENCES `parent_table` (`id`)
)
&lt;/pre&gt;
&lt;p&gt;The declarative foreign key could still enforce the existence of the parent table and referenced column, definition-wise, but do nothing at all to enforce relationship of data.&lt;/p&gt;
&lt;p&gt;Anyway, just a wish.&lt;/p&gt;
&lt;h2&gt;SET FOREIGN_KEY_CHECKS&lt;/h2&gt;
&lt;p&gt;I love that we have &lt;code&gt;set foreign_key_checks&lt;/code&gt;. But it’s a bit inconsistent. Basically, &lt;code&gt;set foreign_key_checks=0&lt;/code&gt; lets you override foreign key constraints. You can do any of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;INSERT&lt;/code&gt; data to a child table even if the parent table does not have matching values.&lt;/li&gt;
&lt;li&gt;With &lt;code&gt;NO ACTION/RESTRICT&lt;/code&gt; rule, &lt;code&gt;DELETE&lt;/code&gt; data from a parent table even if children tables have matching rows.&lt;/li&gt;
&lt;li&gt;With &lt;code&gt;SET NULL/CASCADE&lt;/code&gt; rule, &lt;code&gt;DELETE&lt;/code&gt; data from a parent table without even attempting to cascade the change to children tables.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CREATE TABLE child_table&lt;/code&gt; that references &lt;code&gt;parent_table&lt;/code&gt; even if &lt;code&gt;parent_table&lt;/code&gt; does not exist.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DROP TABLE parent_table&lt;/code&gt; even if &lt;code&gt;child_table&lt;/code&gt; exists and is populated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But, why oh why, will &lt;code&gt;set foreign_key_checks=0&lt;/code&gt; not let me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alter table parent_table modify column id bigint unsigned;&lt;/code&gt;(column type relationship are still enforced)&lt;/li&gt;
&lt;li&gt;Swap a new parent table using a &lt;code&gt;RENAME TABLE&lt;/code&gt; statement (wishful feature, would really help Online DDL)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Limited to server scope&lt;/h2&gt;
&lt;p&gt;This one becomes obvious as your data grows. If you use foreign keys and you &lt;em&gt;rely&lt;/em&gt; on their behavior (e.g. your app relies on a &lt;code&gt;DELETE&lt;/code&gt; to fail if there’s dependent rows in children tables), and your data set grows such that a single server does not have the write capacity, you’re in trouble.&lt;/p&gt;
&lt;p&gt;You may attempt to do functional sharding. You will hopefully find two subsets of your schema’s tables, that are not connected in the foreign key graph. If so, you win the day. But if it’s all connected, then you have to break some relationships. You’d have to audit your app. It previously assume the database would take care of data integrity, and now, for some relationships, it wouldn’t.&lt;/p&gt;
&lt;p&gt;Or you may want to have horizontal sharding. If you mean to keep foreign key constraints, that means you need to find a way to co-locate data across the entire dependency graph. Unless this was pre-designed, you will probably find this to be impossible without a major refactor.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Vitess&lt;/code&gt; is looking into &lt;code&gt;FOREIGN KEY&lt;/code&gt; implementation. It will attempt to address some of the above limitations. See &lt;a href=&quot;https://github.com/vitessio/vitess/issues/11975&quot;&gt;https://github.com/vitessio/vitess/issues/11975&lt;/a&gt; and &lt;a href=&quot;https://github.com/vitessio/vitess/issues/12967&quot;&gt;https://github.com/vitessio/vitess/issues/12967&lt;/a&gt; for some preliminary write ups and tracking.&lt;/p&gt;</content>
		<author>
			<name>shlomi</name>
			<uri>https://code.openark.org/blog</uri>
		</author>
		<source>
			<title type="html">MySQL – code.openark.org</title>
			<subtitle type="html">Blog by Shlomi Noach</subtitle>
			<link rel="self" href="https://code.openark.org/blog/category/mysql/feed/atom"/>
			<id>https://code.openark.org/blog/feed/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">שידרגתי את השרת הזה</title>
		<link href="http://cucomania.mooo.com/he/posts/670/%d7%a9%d7%99%d7%93%d7%a8%d7%92%d7%aa%d7%99-%d7%90%d7%aa-%d7%94%d7%a9%d7%a8%d7%aa-%d7%94%d7%96%d7%94"/>
		<id>http://cucomania.mooo.com/?p=670</id>
		<updated>2023-02-18T15:12:35+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;לפני&lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;root@cucomania:~# cat /etc/debian_version  
10.13
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;אחרי:&lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;root@cucomania:~# cat /etc/debian_version  
11.6
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;השרת Next cloud אצלי גם שודרג מגרסה 23 אל 25 – וזה היה האתגר לשינוי. אני צריך את&lt;a href=&quot;https://apps.nextcloud.com/apps/gpoddersync&quot;&gt; האפליקציה הזאת &lt;/a&gt;ב־next cloud  והיא לא הייתה זמינה. גם לא קיבלתי עדכונים – כי גרסת php שלי הייתה נמוכה מדי.. &lt;/p&gt;



&lt;p&gt;השידרוג של דביאן היה פשוט. רק עדכנתי את /etc/apt/sources.list ואז עשיתי &lt;/p&gt;



&lt;pre class=&quot;wp-block-code&quot;&gt;&lt;code&gt;apt dist-upgrade --auto-remove --purge&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;הבעייה היחידה שלי הייתה בהגדרות של nginx שבה הייתי צריך לשנות מיקום של php-fcm socket (היה טריויאלי). &lt;/p&gt;



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



&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>elcuco</name>
			<uri>http://cucomania.mooo.com</uri>
		</author>
		<source>
			<title type="html">המקור – עברית בלינוקס</title>
			<subtitle type="html">משתמש לינוקס ממוצע, בערך</subtitle>
			<link rel="self" href="http://cucomania.mooo.com/he/category/hamakor/feed"/>
			<id>http://cucomania.mooo.com</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">×”×¤×™×“×¨×¦×™×” ×”×’×™×¢×” ×œ×‘×œ×•×’</title>
		<link href="https://ira.abramov.org/blog/2023/01/29/%d7%94%d7%a4%d7%99%d7%93%d7%a8%d7%a6%d7%99%d7%94-%d7%94%d7%92%d7%99%d7%a2%d7%94-%d7%9c%d7%91%d7%9c%d7%95%d7%92/"/>
		<id>https://ira.abramov.org/blog/?p=5955</id>
		<updated>2023-01-29T16:52:15+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;×œ× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×“×¢ ×ž×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ª×§×¨××• ××ª ×–×” ×‘×¢×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“, ××‘×œ ×¤×¢× ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª×” ×¨×©×ª ×—×‘×¨×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×¡×’×•×¨×” ××‘×œ ×—×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×” ×¢×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×©× ×˜×•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×¨. ×‘× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×© ××—×“ ×‘×©× ×ž××¡×§ ×•×§×œ×§×œ ××•×ª×” ×•×¤×¨×—×” ×œ×” ×‘×—×–×¨×” ×¨×©×ª ×ž×‘×•×–×¨×ª ×›×ž×• ×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×˜×•×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ ×”×ª×—×œ×ª ×”××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×˜×¨× ×˜. ×ž×¡×˜×•×“×•×Ÿ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×¨ ××¤×¤ ×©×”×•×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¢ ×‘×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×§ ×‘×–×ž×Ÿ ×œ×§×œ×•×˜ ××ª ×—×•×‘×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×¨×•×‘×œ×•×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×’ ×©×‘×¨×—×• ×ž×˜×•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×¨ ×•×˜××ž×‘×œ×¨ ×•×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×£ ××•×ª× ×œ×¨×©×ª ×¡×˜×˜×•×¡× ×˜/××§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×¤××‘ ×©×›×‘×¨ ×›×œ×œ×” ×›×ž×” ×ª×•×›× ×•×ª × ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×”×•×œ × ×•×“ ×¨×©×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; (×”×ž×§×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×” ×©×œ ×©×¨×ª ×“×•××¨ ×‘×¨×©×ª SMTP ××• ×©×¨×ª IRC ×•×›×•×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;). ×¢×›×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×• ××¤×©×¨ ×œ×§×¨×•× ××ª ×”×¤×¨×¡×•×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×ª×•×¨ ×”×•×“×¢×•×ª ×‘×¨×©×ª ×”×–×• ×‘×–×›×•×ª ×ª×•×¡×£ ×•×•×¨×“×¤×¨×¡.&lt;/p&gt;



&lt;p&gt;××– ×× ××ª× ×ž×—×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××•×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×›×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×˜×•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×¨ ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; × ×›× ×¡ ×¤×—×•×ª ×•×¤×—×•×ª, ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; &lt;a class=&quot;u-url mention&quot; href=&quot;https://tooot.im/@I&quot; rel=&quot;mention&quot;&gt;@&lt;span&gt;I&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;×©×¨×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¤××‘ ×‘×¢×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª (&lt;a href=&quot;https://joinmastodon.org/servers&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×ž×ª×•×š ××œ×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;/a&gt; ×©×”×•×§×ž×•) ×”× × ×›×•×Ÿ ×œ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•× ×‘×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×¨ ×¢×œ ×‘×¡×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¡ ×ž×¡×˜×•×“×•×Ÿ ××‘×œ ×œ× ×¨×§:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://tooot.im/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×ª×•×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://leftodon.social&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×œ×¤×˜×•×“×•×Ÿ&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://hayu.sh/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×©&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://reshet.social/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×¨×©×ª ×¡×•×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;××œ&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://kishkush.net&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×§×©×§×•×©&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://hed.im&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×”×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;/a&gt;&lt;/li&gt;



&lt;li&gt;&lt;a href=&quot;https://pirsamti.com&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×¤×¨×¡×ž×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;×•×¢×•×§×‘ ××—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×›×•×œ× &lt;a href=&quot;https://hebrewpub.netlify.app/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;××ª×¨ ×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“ ×¢×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/a&gt;.&lt;/p&gt;



&lt;p&gt;×‘×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¦×•×¨, ×‘×¢×•×“ ×¨×’×¢ ××œ×—×¥ ×¤×” ×¢×œ &quot;×¤×¨×¡×•×&quot; ×•×”×¤×•×¡×˜ &lt;a href=&quot;https://tooot.im/@admin@ira.abramov.org&quot;&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¢ ×¤×”&lt;/a&gt;. ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;××œ×œ×”, ×ª×¢×§×‘×•, × ×¨××” ×ž×” ×–×” ×©×•×•×”?&lt;/p&gt;</content>
		<author>
			<name>×¢×™×¨×</name>
			<uri>https://ira.abramov.org/blog</uri>
		</author>
		<source>
			<title type="html">×ª×•×›× ×” ×—×•×¤×©×™×ª – ××¡×›×•×œ×ª ×”×›×•×¨×¡×</title>
			<subtitle type="html">×ž×›×‘×©×ª ×”×ž×™×œ×™× ×©×œ ×¢×™×¨× ××‘×¨×ž×•×‘</subtitle>
			<link rel="self" href="https://ira.abramov.org/blog/category/technology/freesoftware/feed/"/>
			<id>https://ira.abramov.org/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Convert Apache2.4 configuration and rewrite rules into Nginx configuration</title>
		<link href="https://tddpirate.zak.co.il/2022/12/19/convert-apache2-4-configuration-and-rewrite-rules-into-nginx-configuration/"/>
		<id>https://tddpirate.zak.co.il/?p=873</id>
		<updated>2022-12-19T12:44:49+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;Those days I am moving my website from Apache2.4 to Nginx.&lt;/p&gt;
&lt;p&gt;So I googled for “convert apache rewrite to nginx”. I found the folllowing articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.nginx.com/blog/converting-apache-to-nginx-rewrite-rules/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Converting Apache Rewrite Rules to NGINX Rewrite Rules&lt;/a&gt;&lt;br /&gt;
Read it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nginx.org/en/docs/http/converting_rewrite_rules.html&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Converting rewrite rules&lt;/a&gt;&lt;br /&gt;
Shorter but complements the above article. Read it, too.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.containerize.com/2021/05/28/how-to-convert-htaccess-rewrite-rules-to-nginx-rewrite-directives/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;How to Convert htaccess Rewrite Rules to Nginx Rewrite Directives&lt;/a&gt;&lt;br /&gt;
If you prefer this style of writing, read it in lieu of the above articles.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/72521825/convert-htaccess-to-nginx-directives&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Convert .htaccess to Nginx Directives&lt;/a&gt;&lt;br /&gt;
Read it if you need to see yet another example of conversion from Apache2.4 into Nginx.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/58986275/convert-apache-configuration-to-nginx&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Convert Apache configuration to Nginx [closed]&lt;/a&gt;&lt;br /&gt;
Has references to SaaS websites for converting from Apache2.4 into Nginx (see below).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://itecnotes.com/server/nginx-convert-apache-rewrite-rules-to-nginx/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;Nginx – Convert apache rewrite rules to nginx&lt;/a&gt;&lt;br /&gt;
Mentions Apache2.2 and PHP-5, so the relevant information may be obsolete. Skip it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://serverfault.com/questions/1095109/rewrite-rules-from-apache-to-nginx&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;rewrite rules from apache to nginx&lt;/a&gt;&lt;br /&gt;
One cannot be sure if the answer is correct – skip it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.phpflow.com/php/how-to-enable-mod_rewrite-in-nginx/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;How To Enable mod_rewrite In Nginx&lt;/a&gt;&lt;br /&gt;
Waste of your time – skip it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition to the aforementioned articles, I found the following SaaS services for converting Apache2.4 configuration files into Nginx configuration files.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://winginx.com/en/htaccess&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://winginx.com/en/htaccess&lt;/a&gt;&lt;br /&gt;
htaccess to nginx converter. Does good job.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://htaccess2nginx.toolpie.com/&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://htaccess2nginx.toolpie.com/&lt;/a&gt;&lt;br /&gt;
Htaccess to nginx Apache rewrite rule convert to nginx.&lt;br /&gt;
This website actually uses winginx.com to perform the conversion. At bottom of the page, you’ll find that it links to several SaaS conversion services, one of which is the above winginx.com service.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.getpagespeed.com/apache-to-nginx&quot; rel=&quot;noopener&quot; target=&quot;_blank&quot;&gt;https://www.getpagespeed.com/apache-to-nginx&lt;/a&gt;&lt;br /&gt;
Apache .htaccess to NGINX converter. Does good job and warns when some rule cannot be converted.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://labs.gidix.de/nginx/&quot;&gt;https://labs.gidix.de/nginx/&lt;/a&gt;&lt;br /&gt;
nginx-Apache-Rewrite-Converter. Was buggy when I tried it. However, it claims to be in beta. Caveat emptor.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I recommend that you run your conversion in both winginx.com and getpagespeed.com, review and edit the resulting Nginx configuration file.&lt;/p&gt;</content>
		<author>
			<name>Omer Zak</name>
			<uri>https://tddpirate.zak.co.il</uri>
		</author>
		<source>
			<title type="html">software – TDDPirate's Ideas</title>
			<subtitle type="html">Accessibility, Crazy (Event Gripping) Ideas</subtitle>
			<link rel="self" href="https://tddpirate.zak.co.il/category/software/feed/"/>
			<id>https://tddpirate.zak.co.il</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">סידורים אחרונים – וסוגרת את הבסטה הזו</title>
		<link href="https://benhamo.org/2022/12/13/%d7%a1%d7%99%d7%93%d7%95%d7%a8%d7%99%d7%9d-%d7%90%d7%97%d7%a8%d7%95%d7%a0%d7%99%d7%9d-%d7%95%d7%a1%d7%95%d7%92%d7%a8%d7%aa-%d7%90%d7%aa-%d7%94%d7%91%d7%a1%d7%98%d7%94-%d7%94%d7%96%d7%95/"/>
		<id>https://benhamo.org/?p=2557</id>
		<updated>2022-12-13T12:17:08+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;את הבלוג הזה אני כותבת שנים רבות (כולל &lt;a href=&quot;https://archive.benhamo.org/&quot;&gt;גירסת הארכיב&lt;/a&gt;) – עוד משנת 2006 (עוד מהימים &lt;a href=&quot;https://archive.benhamo.org/2006/02/&quot;&gt;שהנאיביות שלי היתה בשיאה…&lt;/a&gt;). כתיבה בבלוג הזה עזרה לי ולאחרים מבחינת שיתוף מידע, מבחינת עבודה ומבחינות נוספות, ואם מאן דהו ישאל אותי איך הוא יכול לקבל חשיפה יותר גדולה בשביל העסק שלו או בשביל עצמו – אני עדיין יאמר שבלוג הוא פתרון מעולה, אם כי כדאי לחשוב גם על אופציות כמו יוטיוב ואולי אפילו אינסטגרם או טיקטוק, תלוי בתחום..&lt;/p&gt;
&lt;p&gt;הגעתי למצב שבו יש לי בכל זמן נתון כ-9 בלוגים שאני מתחזקת, חלקם פתוח לציבור וחלקם מיועד לסקטורים מסויימים והתוכן לא זמין, ולכן החלטתי להתחיל לאחד דברים כך שאוכל להקדיש את זמני הפנוי לתכנים בכמות קטנה של ערוצים, ולהלן הסדר החדש:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;בלוג זה – זה יהיה הפוסט האחרון. רשמית, &quot;חץ בן חמו&quot; כבר לא קיים יותר, אני בתהליך ולכן יש לי בלוג חדש שמתייחס לנושאים שכתבתי עליהם פה + דברים שקשורים למגדר ונושאים נוספים. אתם מוזמנים להוסיף אותו ל-RSS שלכם: &lt;a href=&quot;https://go-tgirl.info/&quot;&gt;הבלוג של דורין&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://archive.benhamo.org/&quot;&gt;בלוג הארכיב&lt;/a&gt; ירד מהמערכת בעוד מספר חודשים.&lt;/li&gt;
&lt;li&gt;בלוגים על מחקר מנועי משאיות, ועל טכנולוגיות הדפסת איפור – יפסקו מלהתקיים&lt;/li&gt;
&lt;li&gt;בלוג – &lt;a href=&quot;https://fbl.benhamo.org/&quot;&gt;ירקות אחרים&lt;/a&gt; – גם הוא ירד.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hetz.biz&quot;&gt;בלוג העסק&lt;/a&gt; – ישאר כבעבר.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;ערוצי יוטיוב&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;אני מודה כי בעבר עשיתי סלט שלם מבחינת קליפים ומיקומם בערוצים השונים, ולכן גם כאן דברים ישתנו:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ערוץ &lt;span style=&quot;text-decoration: underline;&quot;&gt;התאמה מגדרית&lt;/span&gt; – ירד בקרוב ויאוחד עם הערוץ החדש &quot;&lt;a href=&quot;https://www.youtube.com/@dorinxevious1453&quot;&gt;הפינה של דורין&lt;/a&gt;&quot; (חלק מהקליפים בערוץ הישן יוקלטו מחדש, תודה לכל הפידבק)&lt;/li&gt;
&lt;li&gt;ערוץ &quot;&lt;a href=&quot;https://www.youtube.com/@user-wl8xo3nf4f&quot;&gt;כמה מילים ברשותכם&lt;/a&gt;&quot; – ירד מיוטיוב.&lt;/li&gt;
&lt;li&gt;ערוץ &quot;&lt;a href=&quot;https://studio.youtube.com/channel/UCWrtPbXo4iVxO45aRABIJjg&quot;&gt;חץ ביז&lt;/a&gt;&quot; – בניגוד למה שלא מעט חושבים, הערוץ לא בא לקדם את העסק שלי אלא בא לשתף מידע ותוכן על טכנולוגיות, פלטפורמות וכו' (ברוב המקרים העסק שלי אף אינו מוכר שרותים לחלק מהדברים המוצגים) – ערוץ זה ישאר&lt;/li&gt;
&lt;li&gt;ערוץ &lt;a href=&quot;https://www.youtube.com/channel/UCWT-qpKDWsmkaLrWJur4rhg&quot;&gt;Server Techs&lt;/a&gt; –  ערוץ היוטיוב הטכני שלי בשפה האנגלית, גם כאן – מדובר על קליפים בנושאים טכנולוגיים בלבד ומיועד לצופים מכל העולם&lt;/li&gt;
&lt;li&gt;ערוץ &lt;a href=&quot;https://www.youtube.com/@dorinxevious1453&quot;&gt;הפינה של דורין&lt;/a&gt; – זה הערוץ שיחליף את הערוץ &quot;כמה מילים ברשותכם&quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;לסיכום: ערוצים ירדו, ערוצים אחרים יעודכנו, ואתם תוכלו לפי הדברים שמעניינים אתכם – לקבל את המידע ממני בכמות קטנה של אתרים וערוצים.&lt;/p&gt;
&lt;p&gt;ברצוני לנצל הזדמנות זו בכדי &lt;strong&gt;להודות&lt;/strong&gt; לכל הקוראים והמגיבים והמשתתפים. בלעדיכם – זה לא היה קיים, ולכן – תודה לכם &lt;img alt=&quot;🙂&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>דורין זביוס</name>
			<uri>https://benhamo.org</uri>
		</author>
		<source>
			<title type="html">כמה מילים ברשותכם V2.0</title>
			<subtitle type="html">בלוג על טכנולוגיה ועוד כמה נושאים</subtitle>
			<link rel="self" href="https://benhamo.org/feed/"/>
			<id>https://benhamo.org</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Cheatsheet for doing rsync for archiving</title>
		<link href="https://tddpirate.zak.co.il/2022/12/11/cheatsheet-for-doing-rsync-for-archiving/"/>
		<id>https://tddpirate.zak.co.il/?p=866</id>
		<updated>2022-12-11T20:13:44+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;pre&gt;# -avHAX:
# -a = archive (equivalent to -rlptgoD)
#      -r = recurse into directories
#      -l = copy symlinks as symlinks
#      -p = preserve permissions
#      -t = preserve modification times
#      -g = preserve group
#      -o = preserve owner (requires sudo)
#      -D = --devices --specials
#           --devices = preserve device files (requires sudo)
#           --specials = preserve special files
# -v = verbose
# -H = preserve hard links
# -A = preserve ACLs
# -X = preserve xattrs
#
# Before actual work, you may want to use --dry-run.
sudo rsync -avHAX --progress --exclude-from=- $SRCDIR $DESTDIR &amp;lt;&amp;lt;EOF
- /temp/***
- /trash_script.sh
EOF&lt;/pre&gt;</content>
		<author>
			<name>Omer Zak</name>
			<uri>https://tddpirate.zak.co.il</uri>
		</author>
		<source>
			<title type="html">software – TDDPirate's Ideas</title>
			<subtitle type="html">Accessibility, Crazy (Event Gripping) Ideas</subtitle>
			<link rel="self" href="https://tddpirate.zak.co.il/category/software/feed/"/>
			<id>https://tddpirate.zak.co.il</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">שעונים חכמים חופשיים</title>
		<link href="http://cucomania.mooo.com/he/posts/620/%d7%a9%d7%a2%d7%95%d7%a0%d7%99%d7%9d-%d7%97%d7%9b%d7%9e%d7%99%d7%9d-%d7%97%d7%95%d7%a4%d7%a9%d7%99%d7%99%d7%9d"/>
		<id>http://cucomania.mooo.com/?p=620</id>
		<updated>2022-12-11T20:02:03+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;בעבר רציתי שעון חכם וקניתי שעון חכם שתומך ב־&lt;a href=&quot;https://asteroidos.org/&quot;&gt;AsteroidOS&lt;/a&gt;. זה התברר בתור דבר פשוט מיותר… והחלטתי למכור את השעון. אני לא ממליץ על המערכת הפעלה הזאת, היא פשוט לא טובה.&lt;/p&gt;



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



&lt;figure class=&quot;is-layout-flex wp-block-gallery-1 wp-block-gallery has-nested-images columns-4 is-cropped&quot; id=&quot;smart-watch-gallery&quot;&gt;
&lt;figure class=&quot;wp-block-image size-large is-style-default&quot;&gt;&lt;a href=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-4.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-631&quot; height=&quot;590&quot; src=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-4.png&quot; width=&quot;726&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-2-1.png&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-629&quot; height=&quot;910&quot; src=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-2-1.png&quot; width=&quot;1034&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/p3dt-00-1.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-628&quot; height=&quot;1080&quot; src=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/p3dt-00-1.jpg&quot; width=&quot;1080&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;



&lt;figure class=&quot;wp-block-image size-large&quot;&gt;&lt;a href=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-3-1.jpg&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;wp-image-627&quot; height=&quot;640&quot; src=&quot;http://cucomania.mooo.com/wp-content/uploads/2022/11/open-smart-watch-3-1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/figure&gt;



&lt;p&gt;המיזם זמין בכתובת &lt;a href=&quot;https://open-smartwatch.github.io&quot;&gt;https://open-smartwatch.github.io&lt;/a&gt; . יש תרשימים סכימטים, קוד למערכת ההפעלה, קבצים למדפסות תלת מימד ועוד. יש גם חנות שבה אפשר לקנות את החומרה מוכנה –&lt;a href=&quot;https://www.makerfabs.com/open-smartwatch.html&quot;&gt; https://www.makerfabs.com/open-smartwatch.html &lt;/a&gt;. אני לא ממליץ – זאת הגרסה הראשונה שנראית מגעילה. הגרסה השקופה, בצבע שחור נראית לי הכי יפה, אבל גם הגרסה הלבנה (הדקיקה עם המסך ה”רגיל”) נראית משהו בהחלט שמיש.&lt;/p&gt;



&lt;p&gt;רב התיעוד שמצאתי נמצא בווידאו הזה: &lt;a href=&quot;https://www.youtube.com/watch?v=a6kkrQ26h_4&quot;&gt;https://www.youtube.com/watch?v=a6kkrQ26h_4&lt;/a&gt; . נראה שפשוט צריך לבנות את הדבר הזה בעצמך נכון לעכשיו, זה מצריך גישה למדפסת תלת מימד בשביל המארז עצמו, להזמין כמה חלקים מדוד עלי, כלי הלחמה וסבלנות. חומרי הגלם עולים בערך 300₪. אם מישהו קונה ורוצה לבנות לי אחד – צרו קשר!&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;

&lt;/div&gt;&lt;/figure&gt;</content>
		<author>
			<name>elcuco</name>
			<uri>http://cucomania.mooo.com</uri>
		</author>
		<source>
			<title type="html">המקור – עברית בלינוקס</title>
			<subtitle type="html">משתמש לינוקס ממוצע, בערך</subtitle>
			<link rel="self" href="http://cucomania.mooo.com/he/category/hamakor/feed"/>
			<id>http://cucomania.mooo.com</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">כנס GIS בקוד פתוח למגזר הציבורי</title>
		<link href="https://kaplanopensource.co.il/2022/11/02/%d7%9b%d7%a0%d7%a1-gis-%d7%91%d7%a7%d7%95%d7%93-%d7%a4%d7%aa%d7%95%d7%97-%d7%9c%d7%9e%d7%92%d7%96%d7%a8-%d7%94%d7%a6%d7%99%d7%91%d7%95%d7%a8%d7%99/"/>
		<id>http://kaplanopensource.co.il/?p=1412</id>
		<updated>2022-11-02T03:08:53+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;h1 class=&quot;wp-block-heading&quot;&gt;&lt;strong&gt;כנס GIS בקוד פתוח 2022 למגזר הציבורי&lt;/strong&gt;, נובמבר 2022&lt;/h1&gt;



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



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



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



&lt;p&gt;&lt;strong&gt;מתי&lt;/strong&gt;: רביעי, 9.11.22 9:00-13:00&lt;/p&gt;



&lt;p&gt;מיקום: תל-אביב  או בזום (לבחירתכם)&lt;/p&gt;



&lt;p&gt;הרשמה בקישור: &lt;a href=&quot;https://forms.gle/b18bbnKm8xbUKdxJ6&quot;&gt;https://forms.gle/b18bbnKm8xbUKdxJ6&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;ההשתתפות ללא תשלום, אך יש להירשם מראש.&lt;/p&gt;



&lt;p&gt;עדכונים על כנסים וארועים נוספים &lt;a href=&quot;https://kaplanopensource.co.il/news/newsletter/&quot;&gt;הרשמה לניוזלטר &lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Kaplan</name>
			<uri>https://kaplanopensource.co.il</uri>
		</author>
		<source>
			<title type="html">קפלן ייעוץ קוד פתוח</title>
			<subtitle type="html">המקום בו עסקים וקהילה נפגשים</subtitle>
			<link rel="self" href="https://kaplanopensource.co.il/feed/"/>
			<id>https://kaplanopensource.co.il</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">הטעות של רד-האט בנושא תמיכה במקודדי וידאו</title>
		<link href="https://benhamo.org/2022/09/28/%d7%94%d7%98%d7%a2%d7%95%d7%aa-%d7%a9%d7%9c-%d7%a8%d7%93-%d7%94%d7%90%d7%98-%d7%91%d7%a0%d7%95%d7%a9%d7%90-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%91%d7%9e%d7%a7%d7%95%d7%93%d7%93%d7%99-%d7%95%d7%99%d7%93/"/>
		<id>https://benhamo.org/?p=2544</id>
		<updated>2022-09-28T17:03:51+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p style=&quot;text-align: justify;&quot;&gt;אחד הדברים המבורכים בהפצות לינוקס – זו היכולת לקרוא את הדיונים לגבי שינויים שנעשים בהפצות לינוקס, דעות, בעד ונגד. במקרים רבים ישנם החלטות ודיונים פנימיים, אולם בד&quot;כ התוצאות של הדיונים יוצאות בהודעה מסודרת ב-Mailing List הרלוונטי.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;דיון מעניין שחל אתמול קשור להפצת Fedora ולהחלטה &lt;strong&gt;לבטל כל האצה&lt;/strong&gt; של קידוד או פריסת וידאו בהפצת הלינוקס ברמת תשתית &lt;strong&gt;כברירת מחדל&lt;/strong&gt;. במילים אחרות: אם מאן דהוא יפעיל מצלמת Webcam ברזולוציית 1080P והוא ינסה להקליט את הוידאו (לדוגמא עם תוכנה כמו OBS Studio) – סביר להניח שהוא ימצא את התוצאות בלתי מספקות. אם הוא ינסה לנגן וידאו שמקודד ב-H.264 או HEVC או VC1, סביר להניח שבקטעי האקשן, הוא יקבל דילוגים ו&quot;נפילות&quot; (Dropped) בפריימים כך שהתוצאה לא תיראה טוב.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;סביר להניח שמי שישתמש בהפצת הלינוקס וידע לינוקס, ימצא בסופו של דבר כי יש צורך להוסיף REPO שנקרא rpmfusion וממנו יהיה צריך להתקין חבילות של Mesa בהתאם לכרטיס הגרפי שיש במחשב/בלאפטופ (החבילות כיום עדיין אינן קיימות, למיטב ידיעתי). משתמשים חדשים לעומת זאת, שהחליטו לנסות את פדורה, יצטרכו לחפש איזה &quot;מדריך&quot; או איזה פוסט בבלוג כלשהו שיסביר להם מדוע יש את הבעיה ואיך לתקן אותה – לכשהם יתקלו בבעיה.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;מדוע בכלל הבעיה הזו קיימת? (כפי שניתן לראות בדיון &lt;a href=&quot;https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/PYUYUCM3RGTTN4Q3QZIB4VUQFI77GE5X/&quot;&gt;הזה&lt;/a&gt;, העובדה שהחבילות יצאו עם Hardware Acceleration היא בכלל באג שעכשיו &quot;תוקן&quot; ושישבית כל האצה) – התשובה לכך פשוטה: פחדים עלומים של רד-האט מתביעות לגבי פטנטים ותמלוגים, דבר שלא קרה כבר יותר מ-30 שנה בהפצעות לינוקס.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;מכיוון שכותבת שורות אלו ייעצה בעבר לחברות שונות בקשר לפתרונות מולטימדיה ועבדה מול עורכי דין וארגוני Patent pools שונים, אז אני מכירה את הנושא די טוב וחשבתי בפוסט זה לפשט ולהסביר את הדברים בכל הקשור לפטנטים ותשלומים.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;כפי שתוכלו לראות בכל מיני אתרים – ארגון ה-&lt;a href=&quot;https://www.mpegla.com/&quot;&gt;MPEG LA&lt;/a&gt; (שהוא בעצם &quot;ארגון&quot; שדואג למכירת רשיונות למקודדי וידאו ואודיו שונים, גביית תמלוגים, תביעת מפירים וכו') לא ממש &quot;רודף&quot; אחרי נגנים מבוססי קוד פתוח. הארגון מעולם לא תבע את KODI (תבעו את KODI על דברים אחרים, לא על Codecs), או את VLC או את FFMPEG או OBS Studio או כל תוכנת ניגון ו/או עריכת אודיו וידאו מהסיבה הפשוטה שזה לא שווה להם – הן מבחינת יח&quot;צ, הן מבחינת גביה ממשית והן מבחינת רווח סופי כלשהו. (חריגה אחת היתה, למיטב זכרוני, כאשר Dolby Labs ביקשו ממפתחי החבילה ac3dec להפסיק להשתמש במינוח &quot;AC3&quot; מכיוון שמדובר בסימן רשום. מאז פג תוקף למושג, כך שדולבי ירדו מהעניין).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;הארגון &lt;strong&gt;כן&lt;/strong&gt; &quot;רודף&quot; אחרי יצרנים של מוצרים סופיים (בין אם הם משתמשים בפתרונות מבוססי קוד פתוח או סגור). אם לדוגמא חברה מייצרת טלפונים או טאבלטים, והיצרן רוצה לכלול קידוד או פריסה (Encode/Decode) של אודיו או וידאו עם מקודדים מסויימים, אז אותה חברה תסגור רשיון עם MPEG-LA שבו יפורטו סוגי הרשיונות (יש כמה, לא רק סוגי codecs), האם זה יכלול רק פריסה, רק קידוד או גם וגם, וכמובן סוגי Codecs. דוגמא פשוטה: חברת Lenovo מייצרת טאבלטים וטלפונים זולים, רוב המכשירים מהסוגים הנ&quot;ל כוללים תמיכה של פריסה וקידוד במקודד H.264 אך רובם &lt;strong&gt;אינם&lt;/strong&gt; כוללים תמיכה בפריסה וקידוד במקודד HEVC (זה סגור ברמת חומרה), כך שלנובו משלמת רק על H.264, לא על השאר.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;אם נתרגם את זה למציאות: אם מחר אבנה נגן מבוסס Raspberry Pi שיריץ KODI ואמכור זאת כמוצר סופי, סביר להניח ש-MPEG LA יצרו קשר ויבקשו תמלוגים (ואם לא אשלם – אתבע).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;בתחום מערכות ההפעלה השונות, המצב שונה. מיקרוסופט מבקשת בחלק מהמקרים מהמשתמש לרכוש לדוגמא &lt;a href=&quot;https://apps.microsoft.com/store/detail/hevc-video-extensions/9NMZLZ57R3T7&quot;&gt;רשיון HEVC&lt;/a&gt; במחיר של $1. הסיבה? מיקרוסופט נותנת מספר כלים לתצוגה ועריכת וידאו עם תמיכה ל-HEVC ורשיון Windows &lt;strong&gt;אינו כולל רשיון ל-encode (קידוד)&lt;/strong&gt; בכלים שמיקרוסופט נותנת, ולפיכך דרישת התשלום (לא תופיע דרישת תשלום אם מדובר רק בניגון וידאו, לדוגמא).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;בכל הקשור &lt;strong&gt;לניגון וידאו&lt;/strong&gt; – יש כבר מי שמשלם את רשיון ה-Codec והוא – יצרן ה-GPU במחשב, ובדרך כלל אותו יצרן גם כותב את התמיכה להאצת ה-codec ברמת הדרייבר &lt;strong&gt;גם בלינוקס&lt;/strong&gt;, כך שאין כאן צורך תשלום כפול כלשהו לניגון הוידאו, ורד-האט יכולה להתנהג &lt;strong&gt;בדיוק&lt;/strong&gt; כמו מיקרוסופט (שגם היא לא משלמת על מקודדים לצרכי ניגון מדיה), אולם לצערי רד-האט לוקחת צעד אחד רחוק-מדי, ועוצרת את &lt;strong&gt;תמיכת הקידוד/פריסה&lt;/strong&gt; עוד ברמת התשתית (Mesa), אפילו לא ברמת הנגן, דבר שאף אחד לא עושה ואינו נדרש מצד שום גוף רשמי כלשהו, למיטב ידיעתי.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;לסיכום: רד-האט היא חלק מחברת IBM, חברה בעלת מיליוני פטנטים (גם בתחום האודיו ו-וידאו, אגב), וחבל שברד-האט לא מנסים לבדוק את העניין לעומק ובמקום זאת מקשים על משתמשים חדשים בלי שום סיבה רצינית.&lt;/p&gt;</content>
		<author>
			<name>דורין זביוס</name>
			<uri>https://benhamo.org</uri>
		</author>
		<source>
			<title type="html">כמה מילים ברשותכם V2.0</title>
			<subtitle type="html">בלוג על טכנולוגיה ועוד כמה נושאים</subtitle>
			<link rel="self" href="https://benhamo.org/feed/"/>
			<id>https://benhamo.org</id>
		</source>
	</entry>

	<entry>
		<title type="html">O GTalk team, where were thou? (part IV: The END)</title>
		<link href="https://skliarie.blogspot.com/2022/06/o-gtalk-team-where-were-thou-part-iv-end.html"/>
		<id>tag:blogger.com,1999:blog-7511640597328894129.post-8697462206219344167</id>
		<updated>2022-06-14T05:09:14+00:00</updated>
		<content type="html">&lt;p&gt;It is finally happened:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href=&quot;https://www.theverge.com/2022/6/13/23166074/google-talk-messaging-xmpp-shutdown-gchat-pidgin-june-16&quot;&gt;Google Talk is surprisingly still operational, but that ends on Thursday&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Took 12 years to die:&lt;br /&gt;&lt;/p&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;a href=&quot;http://skliarie.blogspot.com/2017/12/o-gtalk-team-where-were-thou-part-iii.html&quot;&gt;O GTalk team, where were thou? (part III) (AKA: The other shoe dropped). (2017)&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;a href=&quot;http://skliarie.blogspot.com/2014/09/o-gtalk-team-where-were-thou-part-ii.html&quot;&gt;O GTalk team, where were thou? (part II) (2014)&lt;/a&gt; &lt;/h3&gt;&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;a href=&quot;http://skliarie.blogspot.com/2010/08/o-gtalk-team-where-were-thou.html&quot;&gt; O GTalk team, where were thou? (2010)&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>Arie Skliarouk</name>
			<email>noreply@blogger.com</email>
			<uri>https://skliarie.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Linux zealot</title>
			<link rel="self" href="https://www.blogger.com/feeds/7511640597328894129/posts/default"/>
			<id>tag:blogger.com,1999:blog-7511640597328894129</id>
		</source>
	</entry>

	<entry>
		<title type="html">backup and restore with duplicity</title>
		<link href="https://oz123.github.io/writings/2018-10-07-backup-and-restore-with-duplicity/index.html"/>
		<id>https://oz123.github.io/writings/2018-10-07-backup-and-restore-with-duplicity/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">Duplicity backup utility is the old workhorse in all recent Ubuntu versions.
I use the GUI called Deja-Dup for quite a while now. But until now I never bothered
to check how to restore my files. I did decide to check how to restore file,
because backup is only half the job! It turns out, that the GUI does a disservice
for duplicity users. Restoring an encrypted backup turned out to not work.
I didn't bother to research why, and turned to the CLI. This is a reminder on
how to restore the files.
      &lt;a href=&quot;https://oz123.github.io/writings/2018-10-07-backup-and-restore-with-duplicity/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">I am on Github sponsors now</title>
		<link href="https://oz123.github.io/writings/2022-05-08-I-am-on-Github-sponsors-now/index.html"/>
		<id>https://oz123.github.io/writings/2022-05-08-I-am-on-Github-sponsors-now/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">This already happend a while ago. I am on Github Sponsors and you can support my opensource work.
      &lt;a href=&quot;https://oz123.github.io/writings/2022-05-08-I-am-on-Github-sponsors-now/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Announce - CoreDNS Netbox Plugin v0.2, now with IPv6</title>
		<link href="https://oz123.github.io/writings/2021-12-30-Announce---CoreDNS-Netbox-Plugin,-now-with-IPv6/index.html"/>
		<id>https://oz123.github.io/writings/2021-12-30-Announce---CoreDNS-Netbox-Plugin,-now-with-IPv6/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">I just released the 2nd version of my CoreDNS plugin for getting DNS records from Netbox. This release adds IPv6.
      &lt;a href=&quot;https://oz123.github.io/writings/2021-12-30-Announce---CoreDNS-Netbox-Plugin,-now-with-IPv6/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Announce - Wolkenbrot v0.3 - now with OpenStack support</title>
		<link href="https://oz123.github.io/writings/2021-10-17-Announce---Wolkenbrot-v0.3---now-with-OpenStack-support/index.html"/>
		<id>https://oz123.github.io/writings/2021-10-17-Announce---Wolkenbrot-v0.3---now-with-OpenStack-support/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">I have just released WolkenBrot v0.3 with OpenStack support.
WolkenBrot is my own little program to bake cloud images.
The name means &quot;Cloud Bread&quot; in German.
      &lt;a href=&quot;https://oz123.github.io/writings/2021-10-17-Announce---Wolkenbrot-v0.3---now-with-OpenStack-support/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Using IPython Notebook on Linux Machines in the Enterprise Corp.</title>
		<link href="https://oz123.github.io/writings/2021-11-24-Using-IPython-Notebook-on-Linux-Machines-in-the-Enterprise-Corp./index.html"/>
		<id>https://oz123.github.io/writings/2021-11-24-Using-IPython-Notebook-on-Linux-Machines-in-the-Enterprise-Corp./index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">A short guide for using IPython and Jupyter Notebook on remote Linux machine
in the Enterprise Corp, where you don't have root rights.
      &lt;a href=&quot;https://oz123.github.io/writings/2021-11-24-Using-IPython-Notebook-on-Linux-Machines-in-the-Enterprise-Corp./index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">blogit - new release</title>
		<link href="https://oz123.github.io/writings/2018-09-21-blogit---new-release/index.html"/>
		<id>https://oz123.github.io/writings/2018-09-21-blogit---new-release/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">After a long development hiatus I am releasing a new version of blogit
      &lt;a href=&quot;https://oz123.github.io/writings/2018-09-21-blogit---new-release/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Visualize almost anything with Grafana and Python</title>
		<link href="https://oz123.github.io/writings/2019-06-16-Visualize-almost-anything-with-Grafana-and-Python/index.html"/>
		<id>https://oz123.github.io/writings/2019-06-16-Visualize-almost-anything-with-Grafana-and-Python/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">This is a short tutorial on how to build a data source for Grafana using Python
Bottle micro-framework. Eventually, you can use this code to connect to any
database (including SQLite).
      &lt;a href=&quot;https://oz123.github.io/writings/2019-06-16-Visualize-almost-anything-with-Grafana-and-Python/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Fooling around with JavaScript and OpenPGP</title>
		<link href="https://oz123.github.io/writings/2019-02-09-Fooling-around-with-JavaScript-and-OpenPGP/index.html"/>
		<id>https://oz123.github.io/writings/2019-02-09-Fooling-around-with-JavaScript-and-OpenPGP/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">Fooling around with JavaScript and OpenPGP, as the title says. I needed to
    create a page in which I can encrypt files with OpenPGP. Doing this with JavaScript
    turned out to be possible. These are the results of my experiment.
      &lt;a href=&quot;https://oz123.github.io/writings/2019-02-09-Fooling-around-with-JavaScript-and-OpenPGP/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html">Thoughts after leaving noris network after two years</title>
		<link href="https://oz123.github.io/writings/2020-03-09-leaving-noris-network-after-two-years/index.html"/>
		<id>https://oz123.github.io/writings/2020-03-09-leaving-noris-network-after-two-years/index.html</id>
		<updated>2022-06-01T13:49:00+00:00</updated>
		<content type="html" xml:lang="en">After two years at noris network AG, yesterday was my last day with this company.
It has been a long time since it felt so hard leaving a company. In my two years
I worked with really great people on some of the most cutting edge technologies.
All these things were not possible without the help of so many great people with
whom I worked with. Some of them might read this post, so here is a big thanks.
I wanted to summerize my two years and gather all the lessons I learned in one place
for my future self and others too.  
It's quite hard summerize such an eclectic post. It's been a wild ride in noris network
with lots of new technologies and ideas. We have had a lot of success. I would like
to think that a great part was because we opted to work in an open source matter,
even thougah not all our projects where open source. This blog post is a summary of the
good things we did, and the positive leasons we learned.  
I hope reading through these will inspire you to choose a similar path.
      &lt;a href=&quot;https://oz123.github.io/writings/2020-03-09-leaving-noris-network-after-two-years/index.html&quot;&gt;continue reading...&lt;/a&gt;</content>
		<author>
			<name>Oz Tiram</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Oz's Blog</title>
			<subtitle type="html">Oz's weblog</subtitle>
			<link rel="self" href="https://oz123.github.io/atom.xml"/>
			<id>https://oz123.github.io/atom.xml</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">×”×ª×“×ž×™×ª ×©×œ ×¢×•×œ× ×”×ª×›× ×” ×”×—×•×¤×©×™×ª ×¢×œ ×¤×¨×©×ª ×“×¨×›×™×</title>
		<link href="https://ira.abramov.org/blog/2022/01/15/future-of-foss-reputation-is-shakey/"/>
		<id>https://ira.abramov.org/blog/?p=5851</id>
		<updated>2022-01-15T16:44:06+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×“×‘×¨ × ×¤×œ×. ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ž××•×”×‘ ×‘×¨×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ ×›×‘×¨ ×›Ö¾28 ×©× ×” ×ž××– ×’×¨×§×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××•×ª×• ×œ×¨××©×•× ×”. ××¨×’× ×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×•×ª ×•××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×•×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×”×¤×¦×ª ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“×¢ ×¢×œ ×•××•×“×•×ª ×—×•×¤×© ×”×ª×•×›× ×”, ×•××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××¤×©×¨ ×œ×–×¨×•×§ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•× ××‘×Ÿ ×‘××£ ×¢× ×£ ×›×œ×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×”×ª×§×œ ×‘×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×¨×¦×” ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¤×©×”×•× ×¢×œ ×©×¨×ª, ×¢×ž×“×ª ×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×‘ ×›×¨×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¡×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×‘×¡×•×¤×¨ ×•×›×ž×•×‘×Ÿ ×©×›×œ ×”××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×˜×¨× ×˜ ×•×›×œ ×›×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¡ ×ž×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ª×•×›× ×•×ª ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×œ×ž×›×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨. ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×¡×˜××¨×˜××¤ ×©×ž×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•× ×‘×©×•×§ ×•×ž×ž×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×‘×“ ××ª ×›×œ ×”×’×œ×’×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×, ×× ×–×” ×‘×ª×•×›× ×”, ×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×œ×•×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ××• ×›×œ ×ª×—×•× ×”× ×“×¡×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;, ××ª×” ×ª×œ×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×ª×•×›× ×”, ×× ×–×” ×‘××¡×˜×¨×•× ×•×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ××• ×ž×›×•× ×•×ª CNC, ×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×¤×¢×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×—× ×•×ª ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“×” ×œ×©××•×‘ ×ž×ž× ×” ××ª ×”×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×“×¨×•×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×ž×§×¦×•×¢. ×ž×¦×“ ××—×“ ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×œ×”×ª×¢×œ×, ×•×ž×”×¦×“ ×”×©× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×ž× ×•×¡ ×ž×œ×”×©×ª×ž×©. ×”×”×ª× ×—×œ×•×ª ×”×–×• ×‘×œ×‘×‘×•×ª ×•×‘×¨×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×•×ª ×”×ª×œ×•×ª ×©×œ ×ª×•×›× ×•×ª ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×—×¨×‘ ×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª, ×•×‘×—×•×“×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”××—×¨×•× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×× ×—× ×• ×¨×•××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×›×ž×” ×¦×¨×•×ª ×©×ž××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×•×ª ×¢×œ ×¢×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“ ×”×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×”.&lt;/p&gt;



&lt;p&gt;××•×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×ž×›×” ×”×›×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×’×“×•×œ×” ×œ×ž×•×¦×¨ ×ª×•×›× ×” ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× × ×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×” ×©×ª×•×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ ×œ&quot;×¨×§×‘×•×Ÿ ×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&quot;. ×ª×•×›× ×” ×©×œ× ×ž×ª×¢×“×›× ×ª ×œ× ×ž×§×‘×œ×ª ×ª×›×•× ×•×ª ×—×“×©×•×ª ××‘×œ ×’× ×œ× × ×¡×ª×ž×•×ª ×‘×” ×¤×¨×¦×•×ª ×©×ž×ª×’×œ×•×ª. ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×© ×œ×” ×¢×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××– ×“×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×‘×¨×•, ×•×‘×›×œ ×¤×¢× ×©×ž×©×”×• ×‘×¢×•×œ× ×”×ª×•×›× ×” ×”×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª × ×©×‘×¨ ×•×ž×©×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¢ ×¢×œ production ×©×œ ×—×‘×¨×•×ª ×ž×¡×—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª, ×”×ª×“×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª × ×¤×’×¢×ª. ×œ××—×¨×•× ×” ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×¨×•××” ×›×ž×” ××¨×•×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×‘××• ×‘×¨×¦×£:&lt;/p&gt;



&lt;ul class=&quot;wp-block-list&quot;&gt;&lt;li&gt;×—×–×¨×ª×• ×©×œ RMS ×œ×”× ×”×œ×ª ×”×ž×•×¡×“ ×œ×ª×•×›× ×” ×”×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×”×‘××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×” ××ª ×”×ž×•×¡×“ ×‘×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×¨×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×, ×•×”×—×œ×” × ×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×” ×ž×“×•×“×” ××‘×œ ×ž×•×¨×’×©×ª ×©×œ ×ª×•×¨×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× (×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×) ×•×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×‘×•×œ×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×, ×—×œ×§× ×¢×ž×•×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ª×•×•×š ×©×œ ×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜ GNU.&lt;/li&gt;&lt;li&gt;×ž×•×¦×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×›×ž×• ×˜×¨××•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¡ ×•Ö¾&lt;a href=&quot;https://www.docker.com/blog/updating-product-subscriptions/&quot;&gt;Docker ×©×¤×ª××•× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× × ×‘×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× × ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª×¨&lt;/a&gt; ×œ×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×¨×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ ×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×‘×©×œ ×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ž×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×œ – ×ž×¦×‘ ×–×” ×©×•×‘×¨ ×”×¤×¦×” ×©×œ ×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×ª, ×•×¢×œ×•×œ ×œ×’×¨×•× ×œ××•×ª× ×ž×•×¦×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ××‘×“ ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×ª×“×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª. &lt;a href=&quot;https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×‘×ž×§×¨×” ×©×œ ×˜×¨××•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¡&lt;/a&gt; ×–×” ××•×ž×¨ ×©×”×¨×‘×” ×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ ×ª×•×›× ×” ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;××œ×¦×• ×œ×¢×©×•×ª ×‘×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×•×ª ×©×›×‘×¨ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª×” ×œ×”× ××•×˜×•×ž×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ×‘×¦×•×¨×” ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ××• ×œ×”×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ ×œ×©×›×ª×‘ ×ž×—×“×© ×ª×”×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×›×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×¢×‘×•×“ ×ž×•×œ ×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××—×¨, ××• ×œ×”× ×˜×© ×•×œ×”×¤×•×š ×œ×¢×•×“ ×’×•×¤×” ×œ×œ× ×¢×“×›×•× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×.&lt;/li&gt;&lt;li&gt;×ž×¤×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×›×ž×• &lt;a href=&quot;https://www.theverge.com/2022/1/9/22874949/developer-corrupts-open-source-libraries-projects-affected&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;×ž××¨×§ ×¡×§×•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×– ×©×”×—×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×• ×¢×œ &quot;×©×‘×¨×• ××ª ×”×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×œ× ×ž×©×—×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&quot;&lt;/a&gt; ×‘×¦×•×¨×” ×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×¨×” ×œ×¢×¦×ž×• ×•×œ×›×œ ×”×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×” ×‘×¨×’×œ ×•×ž×¢×¨×¢×¨×ª ×ž××•×“ ××ª ×‘×˜×—×•×Ÿ ×”×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×• ×¢×•×“ ×œ×¤× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×• ××‘×œ ×”×¡×¤×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×©×œ×• ×”×Ÿ ×ž×¨×›×–×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×•×‘×•×œ×˜×•×ª.&lt;/li&gt;&lt;li&gt;×—×•×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×”×ª×’×œ×• ×‘×©× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”××—×¨×•× ×•×ª ×‘×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×¨×›×–×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•× ×¤×•×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×, ×›×’×•×Ÿ &lt;a href=&quot;https://log4.sh/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Log4Shell&lt;/a&gt;, &lt;a href=&quot;https://heartbleed.com/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Heartbleed&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Shellshock_(software_bug)&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Shellshock&lt;/a&gt; ×•××—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×.&lt;/li&gt;&lt;li&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×© ×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©× ×˜×©×• ××• ×”×©××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×• ×‘×‘×œ×’×Ÿ ×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××¦×œ ×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×”××‘ ×›×©×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×¨×•×¡×•×¤×˜ ×§× ×ª×” ××•×ª×”, ××‘×œ ×–×” ×›× ×¨××” ×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¢×•×˜.&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;×ª×–×•×–×” ×§×˜× ×” ×•×¢×•×“ ××—×ª, ×ž×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; × ×¢× ×•×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×¡×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×” ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×”×¤×›×• ××•×ª×”? ×”×¤×—×“ ×©×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×•×œ××ª ×ž×©×•×‘ ×¢× ×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×©×‘×” ×¤×ª××•× ×—×‘×¨×•×ª ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¤×—×“×• ×œ×”×©×ª×ž×© ×‘×ž×•×¦×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××• ×œ×ª×¨×•× ×œ×”×, ×ž×” ×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×’×¨×•× ×œ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×•×“ ×¨×•×— ×ž×”×ž×¤×¨×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ ×ž×¤×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×ª× ×“×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×‘× ×§×•×“×•×ª ×›××œ×• ×›×“××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×–×›×•×¨ ×©×”×ž×ª× ×“×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ× ×ž×ž×© ×ž×§×‘×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×¨×‘×” ×’×‘, ×—×œ×§× ××¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×• ×œ× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×“×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×š ×œ×©×•×•×§ ××ª ×”×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜ ××• ×œ×§×‘×œ ×ª×¨×•×ž×•×ª ×’× ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×• ×©× ×›×•×Ÿ ×œ×”× ×œ×‘×§×©. ×”×ž×§×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ ×ž×¤×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×›×ž×• ×ž××¨×§ ×¡×§×•×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×¡ ×ž×“××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ××•×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ž××•×“: ×‘×•×§×¨ ××—×“ ×§× ××“× ×•××•×ž×¨ ×œ×¢×¦×ž×• ×©×œ× ×ž×©×œ×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×• ×ž×¡×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§ ××– ×”×•× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª×§×¢ ×œ×›×•×œ× ×ž×§×œ ×‘×’×œ×’×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× (×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×• ×œ× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×“×¢ ×× ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª×” ×“×¨×š ×œ×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×”×• ×œ×©×œ× ×œ×• ×œ×¤× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×©×”×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ ×œ×”×©×ª×•×œ×œ). ×‘×ª×’×•×‘×” ×œ× ×‘×œ×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ž×•×¦×“×§×ª × ×—×¡×ž×• ×œ×• ×—×©×‘×•× ×•×ª ××¦×œ ×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×”××‘ ×•Ö¾pypi. ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×© ×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×›×ž×” ×“×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×•×ž×¨ ×œ×ž×¤×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×”×—×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×• ×œ×¤×¨×¡× ×§×•×“ ×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ ×¤×ª×•×— – ×¨××©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×• ×‘×¦×•×¨×” ×‘×¨×•×¨×” ×ž×” ×ª× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×¨×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ (××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ ×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ ×‘×¨×•×¨ ×ž×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×” ×¢×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›× ××ª ×”××—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×× ×œ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× × ×“×¤×§ ×ž×©×”×•, ×•×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×ª ×”×ž×—×“×œ ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× × ×” &quot;× ×—×œ×ª ×”×›×œ×œ&quot;), ×•×©× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×• ×ž×•×›× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×• ×œ×›× ×”×¨×‘×” ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×¡×—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×× ×œ× ×ž×§×•×‘×œ ×¢×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›×, ××œ ×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¨×• ×œ×¢×¦×ž×›× ×‘×¨×’×œ, ×¤×¦×œ×• ××ª ×”×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜ ×œ×’×¨×¡× ×¤×ª×•×—×” ×•××—×ª ×¡×’×•×¨×” ×‘×ª×©×œ×•× ××• ×›×œ ×“×¨×š ××—×¨×ª. ×œ×“×—×•×£ ×§×•×“ ×©×©×•×‘×¨ ××ª ×”×¡×¤×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ×©×œ×›× ×ž×‘×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×— ×’× × ×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×” ×©×œ ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×’× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×•×“ ×”××ž×•×Ÿ ×‘×›× ×œ×¢×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“, ×•×›×ž×•×‘×Ÿ ×¤×•×ª×— ×¤×—×ª ×œ×ª×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¢×•×ª ×ž×©×¤×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×× ×”×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ ×©×œ×›× ×œ× ×ž×¦×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ × ×›×•×Ÿ.&lt;/p&gt;



&lt;p&gt;×•×¨×§ ×›×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×ª ×‘×¨×•×¨: ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×© ×”×ž×•×Ÿ ×—×“×©×•×ª ×˜×•×‘×•×ª ×‘×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×” ×”×–×•,  ×”×¤×—×“ ×©×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×”×•× ×ž×”×ª×“×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×‘×¢×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×¡×—×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×, ×©×”×¤×›×• ×œ×—×©×•×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž××•×“ ×‘×ª×”×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×š ×”×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª×•×— ×©×œ ×›×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×§×˜× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×¤×¢×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×”×§×¨× ×œ ×©×œ ×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×§×¡ ×•×¤×¨×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§×˜×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×¡×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘×• ×¢×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×ª×•×¡×¡×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×•×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×¤×•×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×§×•×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”×©×›× ×•×”×¢×¨×‘.&lt;/p&gt;



&lt;figure class=&quot;wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter&quot;&gt;&lt;div class=&quot;wp-block-embed__wrapper&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p dir=&quot;ltr&quot; lang=&quot;en&quot;&gt;Damn. &lt;a href=&quot;https://twitter.com/zx2c4?ref_src=twsrc%5Etfw&quot;&gt;@zx2c4&lt;/a&gt; has been the Linux random driver maintainer for like a hot minute, and /dev/[u]random is now 100% SHA-1 free and 370% faster. Amazing.&lt;a href=&quot;https://t.co/qh5eh0L9lN&quot;&gt;https://t.co/qh5eh0L9lN&lt;/a&gt;&lt;a href=&quot;https://t.co/CuQD8pDrIg&quot;&gt;https://t.co/CuQD8pDrIg&lt;/a&gt;&lt;/p&gt;— Filippo Valsorda @filippo.abyssdomain.expert (@FiloSottile) &lt;a href=&quot;https://twitter.com/FiloSottile/status/1476698207413493766?ref_src=twsrc%5Etfw&quot;&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/figure&gt;



&lt;p&gt;×•×ž×” ×”×¤×ª×¨×•×Ÿ? ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×ª×©×•×‘×”. ×’× ×›×›×” ×”×¨×©×ª ×©×œ× ×• ×”×¤×›×” ×‘×¢×©×•×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×”××—×¨×•× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›×•×–×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×ž×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;. ×›×œ ×”×§×•×“ ×”×¢×“×›× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×”××‘. ×›×œ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“×¢ ×”×˜×›× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×¡×˜××§ ××•×‘×¨×¤×œ×•. ×”×¨×©×ª ×”×—×•×¤×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×©×”×ª××”×‘×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×” ×›×ž×¢×˜ ×›×‘×¨ ×œ× ×§×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×ª, ×›×©×›×œ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“×¢ ×•×”×ª×§×©×•×¨×ª ×§×•×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ ×”×›×ª×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ 10 ×—×‘×¨×•×ª (×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; × ×“×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×‘) ×•×œ× ×‘×¢×©×¨×•×ª ××œ×¤×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××ª×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×ž×‘×•×–×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×× ×ž×—×¨ ×’×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×˜×”××‘ ×ž×©× ×” ×ª× ××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×¨×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•×Ÿ, ××• ×¡×˜××§ ××•×‘×¨×¤×œ×• ×¤×•×©×˜×ª ×¨×’×œ ×–×• ×ž×›×” ×¨×¦×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×ž××•×“ ×œ×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×ª ×”×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×. ×× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×œ×ž×©×œ ×ž×—×–×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×§ ×‘×‘×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ª ×ª×œ×ª×¤×¡×ª ×©×›×œ ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×“×¢ ×©×œ ×§×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×ª ×”×ž×©×ª×ž×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×©×œ×” ×”×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×” ×‘×’×•×’×œ ×¤×œ×•×¡, ×•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×•× ××—×“ ×¤×©×•×˜ ×”×•×¡×¨ ×‘×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›×•×œ×ª ×œ×’×‘×•×ª×• ×›×¨××•×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;, ×•×¨×§ ××—×•×– ×§×˜×Ÿ ×ž×ž× ×• ×©×•×—×–×¨ ××—&quot;×› ×œ××ª×¨ ×¢×¦×ž××&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ××—×¨.&lt;/p&gt;



&lt;p&gt;×ž×•×–×ž× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×œ×ª×ª ××ª ×“×¢×ª×›× ×•×¤×ª×¨×•× ×•×ª×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×›× ×¤×” ×‘×ª×’×•×‘×•×ª, ×¨×§ ××œ ×ª×ª×—×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×œ×• ×œ×ž×›×•×¨ ×œ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt; ×‘×œ×•×§×¦'×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×Ÿ. ×“×‘×¨×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×©×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;×ž×&lt;img alt=&quot;™&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/2122.png&quot; style=&quot;height: 1em;&quot; /&gt;× ×‘×œ×‘×“ &lt;img alt=&quot;🙂&quot; class=&quot;wp-smiley&quot; src=&quot;https://s.w.org/images/core/emoji/15.0.3/72x72/1f642.png&quot; style=&quot;height: 1em;&quot; /&gt;&lt;/p&gt;</content>
		<author>
			<name>×¢×™×¨×</name>
			<uri>https://ira.abramov.org/blog</uri>
		</author>
		<source>
			<title type="html">×ª×•×›× ×” ×—×•×¤×©×™×ª – ××¡×›×•×œ×ª ×”×›×•×¨×¡×</title>
			<subtitle type="html">×ž×›×‘×©×ª ×”×ž×™×œ×™× ×©×œ ×¢×™×¨× ××‘×¨×ž×•×‘</subtitle>
			<link rel="self" href="https://ira.abramov.org/blog/category/technology/freesoftware/feed/"/>
			<id>https://ira.abramov.org/blog</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">What is Ventoy, and why you should always have one!</title>
		<link href="https://levdev.blog/2021/09/24/what-is-ventoy-and-why-you-should-always-have-one/"/>
		<id>http://levdev.blog/?p=626</id>
		<updated>2021-09-24T11:20:42+00:00</updated>
		<content type="html">TL;DR; Before I get to ranting, here is the quick answer: Ventoy is a Free Software multi-platform tool that lets you boot ISO files from a USB drive. Key features that make it different from other tools like Etcher or Unetbootin are: You don’t need to “flash” the ISO to the drive – just copy […]</content>
		<author>
			<name>levdev</name>
			<uri>https://levdev.blog</uri>
		</author>
		<source>
			<title type="html">Lev's developer blog</title>
			<subtitle type="html">Programming and software freedom rants, tips, etc.</subtitle>
			<link rel="self" href="https://levdev.blog/feed/atom/"/>
			<id>http://levdev.blog/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Reducing my OSS involvement, and how it affects orchestrator &amp;amp; gh-ost</title>
		<link href="https://code.openark.org/blog/mysql/reducing-my-oss-involvement-and-how-it-affects-orchestrator-gh-ost"/>
		<id>http://code.openark.org/blog/?p=8186</id>
		<updated>2021-07-20T12:14:56+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;I’m going to bring down my work volume around OSS to a minimum, specifically when it comes to &lt;a href=&quot;https://github.com/openark/orchestrator&quot;&gt;orchestrator&lt;/a&gt; and &lt;a href=&quot;https://github.com/openark/gh-ost&quot;&gt;gh-ost&lt;/a&gt;. This is to explain the whats and hows so that users are as informed as possible. TL;DR a period of time I will not respond to issues, will not review pull requests, will not produce releases, will not answer on mailing lists. That period of time is undefined. Could be as short as a few weeks, could be months, more, an unknown.&lt;/p&gt;
&lt;h2&gt;The “What”&lt;/h2&gt;
&lt;p&gt;Both &lt;code&gt;orchestrator&lt;/code&gt; and &lt;code&gt;gh-ost&lt;/code&gt; are popular tools in the MySQL ecosystem. They enjoy widespread adoption and are known to be used at prominent companies. Time and again I learn of more users of these projects. I used to keep a show-off list, I lost track since.&lt;/p&gt;
&lt;p&gt;With wide adoption comes community engagement. This comes in the form of questions (“How do I…”, “Why does this not work…”, “Is it possible to…”), issues (crashing or data integrity bugs, locking issues, performance issues, etc.), suggestions (support this or that) and finally pull requests.&lt;/p&gt;
&lt;p&gt;At this time, there’s multiple engagements per day. Between these two projects I estimate more than a full time job addressing those user interactions. That’s a full time job volume on top of an already existing full time job.&lt;/p&gt;
&lt;p&gt;Much of this work went on employer’s time, but I have &lt;em&gt;other&lt;/em&gt; responsibilities at work, too, and there is no room for a full-time-plus work on these projects. Responding to all community requests is unsustainable and futile. Some issues are left unanswered. Some pull requests are left open.&lt;/p&gt;
&lt;p&gt;Even more demanding than time is &lt;em&gt;context&lt;/em&gt;. To address a user’s bug report I’d need to re-familiarize myself with 5-year old code. That takes the toll of time but also memory and context switch. As community interaction goes, a simple discussion on an Issue can span multiple days. During those days I’d jump in and out of context. With multiple daily engagements this would mean re-familiarizing myself with different areas of the code, being able to justify a certain behavior; or have good arguments to why we should or should not change it; being able to simulate a scenario in my brain (I don’t have access to users’ environments); comprehend potential scenarios and understand what could break as result of what change — I don’t have and can’t practically have the tests to cover the myriad of scenarios, deployments, software, network and overall infrastructure in all users environments.&lt;/p&gt;
&lt;p&gt;Even if I set designated time for community work, this still takes a toll on my daily tasks. The need to have a mental projection in your brain for all that’s open and all that’s to come makes it harder to free my mind and work on a new problem, to really immerse myself in thought, to create something new.&lt;/p&gt;
&lt;h2&gt;When? For how long?&lt;/h2&gt;
&lt;p&gt;&lt;span id=&quot;more-8186&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Effective immediately. I made some promises, and there’s a bunch of open issues and pull requests I intend to pursue, but going forward I’m going to disengage from further questions/requests/suggestions. I’m gonna turn off repo notifications and not get anything in my mailbox.&lt;/p&gt;
&lt;p&gt;My intention is to step back, truly disengage, and see what happens. There’s a good chance (this happened before) that after some time I feel the itch to come back to working on these projects. Absolutely no commitments made here.&lt;/p&gt;
&lt;h2&gt;What does this mean for orchestrator?&lt;/h2&gt;
&lt;p&gt;After 7 years of maintaining this project, first at &lt;a href=&quot;https://www.outbrain.com/&quot;&gt;Outbrain&lt;/a&gt;, then &lt;a href=&quot;https://www.booking.com/&quot;&gt;Booking.com&lt;/a&gt;, then &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt; and now at &lt;a href=&quot;http://planetscale.com/&quot;&gt;PlanetScale&lt;/a&gt;, I’m gonna step back and refrain from new developments, from responding to issues, from answering questions, from reviewing pull requests.&lt;/p&gt;
&lt;p&gt;I should mention that in the past year or so, I’ve merged more community contributions than my own. That’s staggering! There are very capable contributors to this project.&lt;/p&gt;
&lt;p&gt;In essence, the core of &lt;code&gt;orchestrator&lt;/code&gt; hasn’t changed in a while. The main logic remains the same. I suspect &lt;code&gt;orchestrator&lt;/code&gt;will remain effective for time to come. I am sure some users will be alarmed at this post, and wonder whether they should keep using &lt;code&gt;orchestrator&lt;/code&gt; or search for other solutions. I am in no position to make a suggestion. Users should carefully evaluate what’s in their best interests, what they deem to be stable and reliable software, what they deem to be supported or repairable, etc.&lt;/p&gt;
&lt;h2&gt;What does this mean for gh-ost?&lt;/h2&gt;
&lt;p&gt;I co-designed and co-authored &lt;code&gt;gh-ost&lt;/code&gt; at &lt;a href=&quot;https://github.com/github/gh-ost&quot;&gt;GitHub&lt;/a&gt; (&lt;a href=&quot;https://github.blog/2016-08-01-gh-ost-github-s-online-migration-tool-for-mysql/&quot;&gt;announcement&lt;/a&gt;) as part of the database infrastructure team. We wrote &lt;code&gt;gh-ost&lt;/code&gt; to solve a pressing issue of schema changes at GitHub, and were happy to open source it. This led to, frankly, an overwhelming response from the community, with very fast adoption. Within the first few months we received invaluable feedback, bug reports, suggestions, all of which had direct and positive impact to &lt;code&gt;gh-ost&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I’m not working at GitHub anymore, and I’m not an official maintainer of the upstream repo anymore. I do not have the authority to merge PRs or close issues. It is as it should be, the project is owned by GitHub.&lt;/p&gt;
&lt;p&gt;I use &lt;code&gt;gh-ost&lt;/code&gt; as part of my current job at &lt;a href=&quot;https://www.planetscale.com/&quot;&gt;PlanetScale&lt;/a&gt; working on OSS &lt;a href=&quot;https://vitess.io/&quot;&gt;Vitess&lt;/a&gt;. Vitess &lt;a href=&quot;https://vitess.io/docs/user-guides/schema-changes/ddl-strategies/#gh-ost&quot;&gt;utilizes&lt;/a&gt; &lt;code&gt;gh-ost&lt;/code&gt; for online DDL. I therefore am an interested party in &lt;code&gt;gh-ost&lt;/code&gt;, most specifically to ensure it is correct and sound. For this reason, I selectively engage with users on GitHub’s repo, especially when it comes to issues I consider important for Vitess.&lt;/p&gt;
&lt;p&gt;I do maintain a fork, where I either interact with users, or push my own changes. I collaborate with the GitHub team, contribute upstream changes I make on my fork, and pull changes downstream. The GitHub team is kind enough to accept my contributions and invest time in testing and evaluating what might be risky changes. The upstream and downstream code is mostly in sync.&lt;/p&gt;
&lt;p&gt;Going forward I will continue to work on things critical to my current job, but otherwise I’ll be stepping away and reduce interactions. This means I will not accept pull requests or answer questions. The upstream &lt;code&gt;gh-ost&lt;/code&gt; repo remains under GitHub’s ownership and maintained by GitHub’s engineers. It is not in my authority to say how the upstream project will engage with the community and I do not presume to make suggestions.&lt;/p&gt;
&lt;h2&gt;On community interaction&lt;/h2&gt;
&lt;p&gt;I must say that I’m thoroughly humbled and grateful for the interactions on these projects. I hear of other OSS projects suffering abuse, but my work has seen respectful, thoughtful, empowering and inspiring user interactions. The majority of users invest time and thought in articulating an issue, or engage in respectful discussion while suggesting changes. I’ve actually “met” people through these interactions. I can only hope I payed back in same coin.&lt;/p&gt;
&lt;h2&gt;On community assistance&lt;/h2&gt;
&lt;p&gt;Community also provides assistance in several forms. The simplest and truly most helpful is by answering questions. Some community members will respond on issues, or on mailing lists, in chat rooms. Some users will identify similar issues to their own, opened by other users, will discuss and help each other, and share information.&lt;/p&gt;
&lt;p&gt;Some companies and users are consistent contributors, working on issues that are both specific to their particular needs, as well as ultimately useful for the greater community.&lt;/p&gt;
&lt;p&gt;At a previous time where I was overwhelmed with OSS/community work, two prominent companies, let’s call them S and P, stepped forward to offer actual development time; assign their own engineers part-time for a limited period to help pushing forward. I’m forever grateful for their kindness! I didn’t take those offers back then, because I didn’t have a good plan (I still don’t) for coordinating that kind of work; it felt like it would take even more efforts to set it up.&lt;/p&gt;
&lt;h2&gt;Can we jump in as contributors?&lt;/h2&gt;
&lt;p&gt;I don’t have a good plan for making this work, or for ensuring that this works well. I prefer that users fork &lt;a href=&quot;https://github.com/openark/orchestrator&quot;&gt;orchestrator&lt;/a&gt;, and to not bring in contributors to this repo. If a contributor does have a solid plan, you probably know where to find me.&lt;/p&gt;</content>
		<author>
			<name>shlomi</name>
			<uri>https://code.openark.org/blog</uri>
		</author>
		<source>
			<title type="html">MySQL – code.openark.org</title>
			<subtitle type="html">Blog by Shlomi Noach</subtitle>
			<link rel="self" href="https://code.openark.org/blog/category/mysql/feed/atom"/>
			<id>https://code.openark.org/blog/feed/atom</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">רכישת מחשב חדש, כל מה שצריך לדעת: לוח אם (חלק 4)</title>
		<link href="https://ilsh.duckdns.org/?p=5511"/>
		<id>https://ilsh.duckdns.org/?p=5511</id>
		<updated>2021-04-23T17:43:49+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;מה תפקידו של לוח האם?&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;לוח האם מחבר בין כל חלקי המחשב, אליו מתחברים הרכיבים ודרכו הם &quot;מדברים&quot;.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;באיור 1 פירטתי את המחברים השונים שקיימים בלוח אם טיפוסי: ניתן לראות את שקע המעבד, את שקעי הזיכרון (RAM), שקע לכרטיס מסך, שקעי SATA (אליהם מחברים דיסק הקשיח / צורב).&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;אם אמשיל את המחשב למכונית אז לוח האם מהווה את השלדה של הרכב. כשם שלשלדת רכב מחברים את כל רכיבי המכונית כך ללוח האם מחברים את כל רכיבי המחשב. כשם שבמכונית ספורט עם מנוע פרארי לא תשימו שילדה של פיאט 850 כך גם בלוח האם: אם השקעתם במעבד יקר מן הסתם שתשקיעו גם בלוח אם איכותי (למרות שניתן להרכיב גם לוח אם פשוט).&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span id=&quot;more-5511&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;בוחרים לוח אם מיד לאחר שקונים מעבד. אם קניתם מעבד של Intel תצטרכו לבחור בלוח אם שתומך במעבדי Intel (מהדגם הספציפי שקניתם), כנ&quot;ל אם תקנו מעבד AMD.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;אם ברשותכם מעבד ישן רוב הסיכויים שתתקשו למצוא לו לוח אם מתאים (כך שאם ברשותכם לוח מקולקל תתקשו למצוא לו תחליף: תוכלו לרכוש באתרים כגון Ebay, עם כל הסיכון הכרוך בכך, פחות בחנויות מחשבים רגילות)&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;בלוח האם מיושמת אלקטרוניקה &quot;כבדה&quot; שמאפשרת את עבודת המחשב. האלקטרוניקה הזאת מיושמת באמצעות ערכות שבבים הנקראים Chipset. יש Chipset זולים, שמתאימים למחשבים פשוטים, ויש יקרים יותר.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;כל המעבדים החדשים של אינטל (דורות 8 ו- 9) מחייבים שימוש בציפסט מסדרה 300. ניתן לדרג את איכות הציפסט כך:&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;H310 &amp;lt; B360, B365 &amp;lt; H370 &amp;lt; Z370 &amp;lt; Z390&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;strong&gt;למה אני מייחס איכות?&lt;/strong&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li dir=&quot;auto&quot;&gt;מספר חריצי הרחבת זכרון (2 או 4)&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;יכולות המהרה&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;איכות כרטיס הקול&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;כמות יציאות USB&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;אפשרות לחבר SSD מסוג M2 ישירות ללוח האם&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;איכות הרכיבים (קבלים בעיקר) ואיכות הבניה כללית&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;strong&gt;כללי האצבע לבחירת לוח אם:&lt;/strong&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li dir=&quot;auto&quot;&gt;לוח מבוסס ציפסט H310 הוא הלוח הפשוט והזול ביותר. תבחר בו אם בחרת במעבד Intel Pentium&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;תבחר בלוח מבוסס ציפסט B360 או B365 אם בחרת במעבד Intel Core i3&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;תבחר בלוח מבוסס ציפסט H370 אם בחרת במעבד Intel Core i5&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;תבחר בלוח מבוסס ציפסט Z370 אם בחרת במעבד Intel Core i7&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;תבחר בלוח מבוסס ציפסט Z390 אם בחרת במעבד Intel Core i9
&lt;div dir=&quot;auto&quot;&gt;ההיגיון בבחירה הוא זה: אם שילמת 1500 ש&quot;ח על מעבד אז בבקשה אל תקנה לוח אם שעולה 200 ש&quot;ח… זה יעבוד, אבל כדאי מאוד להשקיע יותר ולהתאים את איכות הלוח לאיכות המעבד…&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;ל- AMD יש כמובן סדרות אחרות של ציפסטים אבל הרעיון דומה…&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-medium wp-image-5512&quot; height=&quot;300&quot; src=&quot;https://ilsh.duckdns.org/wp-content/uploads/2021/04/bnc-04-01-300x300.jpg&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>אילן שביט</name>
			<uri>https://ilsh.duckdns.org</uri>
		</author>
		<source>
			<title type="html">האתר של שביט אילן</title>
			<subtitle type="html">בלוג על לינוקס ותוכנה חופשית</subtitle>
			<link rel="self" href="https://ilsh.duckdns.org/?feed=atom"/>
			<id>https://ilsh.duckdns.org/?feed=atom</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">רכישת מחשב חדש, כל מה שצריך לדעת: זכרון (חלק 3)</title>
		<link href="https://ilsh.duckdns.org/?p=5507"/>
		<id>https://ilsh.duckdns.org/?p=5507</id>
		<updated>2021-04-23T17:43:42+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;אז אחרי שבחרנו מעבד אתמקד הפעם ברכישת זכרון RAM&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;בטח תשאלו: למה מחשב צריך בכלל זכרון? למה הוא משמש?&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;הזיכרון הוא אזור העבודה של המעבד. כשאתם טוענים תוכנה (אופיס, מחשבון או כל תוכנה אחרת) התוכנה נטענת מהדיסק הקשיח לתוך אזור מסוים בזיכרון ושם היא רצה. מאחר שהזיכרון מאוד מהיר אז מעבר מתוכנה לתוכנה מתבצע כהרף עין (המעבד רק מדלג בין אזורים שונים בזיכרון). כשאתם מדליקים את המחשב גם מערכת ההפעלה עצמה נטענת לזיכרון ורצה ממנו.&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span id=&quot;more-5507&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;כפי שניתן להבין, לזיכרון תפקיד קריטי בעבודת המחשב. תקלה ברכיב לא תאפשר עבודה שוטפת במחשב (הוא יקרוס, תראו מסכים כחולים והדבר היחידי שניתן יהיה לעשות זה לכבות אותו בכוח)&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;דרישת המינימום של חלונות 10 היא 2 גיגה בייט (2GB) זכרון.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;מה זה גיגה בייט? גיגה זה מיליארד. אז 2 גיגה בייט זה 2 מיליארד תאי זכרון. בדרך כלל רוכשים 4 גיגה בייט זכרון (כשיש מגבלה תקציבית מאוד גדולה), 8, 16 או 32 גיגה בייט (למשתמשים הכבדים ביותר).&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;באיור 1 ניתן לראות כיצד נראה התקן זכרון של מחשב נייד. זכרון של מחשב נייח נראה דומה (רק הוא קצת יותר ארוך – איור 2).&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;קניית זכרון הוא תהליך פשוט יחסית. תפעלו לפי הכללים הבא:&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;1. &quot;כמה שיותר הרי זה משובח…&quot;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;2. “קנו תמיד את הדגם האחרון&quot;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;היסטוריה: פעם השתמשו בהתקן זכרון שנקרא SDRAM. עם הזמן הוא שודרג ונקרא DDR. השנים חלפו, המהירויות גדלו וככה נוספו ספרות שונות לרכיב: DDR3, DDR2 ועכשיו מוכרים DDR4. אם תקראו את המאמר בעוד מספר שנים בטח יהיה DDR5 או DDR6. אתם תקנו תמיד את הדגם האחרון (DDR4 בזמן כתיבת המאמר).&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;בסעיף קודם כתבתי לקנות כמה שיותר זכרון אבל בכל זאת לא צריך להשתגע… מס' כללי אצבע לרכישת זכרון:&lt;/div&gt;
&lt;ul&gt;
&lt;li dir=&quot;auto&quot;&gt;&lt;strong&gt;נפח 4GB:&lt;/strong&gt; כשהתקציב מאוד לוחץ. מתאים לאדם שכל רצונו לגלוש מעת לעת במחשב (בלי הרבה לשוניות פתוחות), לערוך מסמכים ולשחק במשחקים פשוטים&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;&lt;strong&gt;נפח 8GB:&lt;/strong&gt; נפח שמתאים לרוב האוכלוסיה ולרוב השימושים&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;&lt;strong&gt;נפח 16GB:&lt;/strong&gt; מתאים לגיימרים, עורכי וידאו ופוטושופ&lt;/li&gt;
&lt;li dir=&quot;auto&quot;&gt;&lt;strong&gt;נפח 32GB:&lt;/strong&gt; מתאים לגיימרים כבדים ועורכי וידאו מיקצועיים.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;strong&gt;הערה:&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;הזיכרון עליו כתבתי הוא זכרון נדיף. זה אומר שהמידע שעליו נמחק ברגע שאתחלתם או כיביתם את המחשב (מידע קבוע נשמר רק בדיסק הקשיח)&lt;/div&gt;
&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;aligncenter size-medium wp-image-5508&quot; height=&quot;257&quot; src=&quot;https://ilsh.duckdns.org/wp-content/uploads/2021/04/bnc-03-01-300x257.jpg&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;o9v6fnle cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q&quot;&gt;
&lt;div dir=&quot;auto&quot;&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>אילן שביט</name>
			<uri>https://ilsh.duckdns.org</uri>
		</author>
		<source>
			<title type="html">האתר של שביט אילן</title>
			<subtitle type="html">בלוג על לינוקס ותוכנה חופשית</subtitle>
			<link rel="self" href="https://ilsh.duckdns.org/?feed=atom"/>
			<id>https://ilsh.duckdns.org/?feed=atom</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en">How “undefined” is undefined behavior?</title>
		<link href="https://levdev.blog/2021/03/07/how-undefined-is-undefined-behavior/"/>
		<id>http://levdev.blog/?p=592</id>
		<updated>2021-03-07T00:45:18+00:00</updated>
		<content type="html">I was browsing StackOverflow yesterday, and encountered an interesting question.Unfortunately, that question was closed almost immediately, with comments stating: “this is undefined behavior” as if there was no explanation to what was happening. But here is the twist: the author of the question knew already it was “undefined behavior”, but he was getting consistent results, […]</content>
		<author>
			<name>levdev</name>
			<uri>https://levdev.blog</uri>
		</author>
		<source>
			<title type="html">Lev's developer blog</title>
			<subtitle type="html">Programming and software freedom rants, tips, etc.</subtitle>
			<link rel="self" href="https://levdev.blog/feed/atom/"/>
			<id>http://levdev.blog/feed/atom/</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">תלות גומלין</title>
		<link href="https://firstpost.org/?p=190"/>
		<id>https://firstpost.org/?p=190</id>
		<updated>2020-10-02T08:11:26+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;השליט העליון שכב במיטת בית החולים. הוא התקשה לנשום והתקשה לחשוב. את מעט הריכוז שעוד הצליח לגייס הפרו הצפצופים הדחופים של מכונות הניטור והחמצן. המחלה הארורה השיגה אותו לבסוף. כמו שהזהירו המדענים, החיסון לא עבד. הוא שמח כשנזכר שהורה על הוצאתם להורג. &quot;מה הטעם במדענים&quot;, חשב לעצמו בלעג, &quot;אם אינם מועילים בריפוי המגיפה?&quot;&lt;/p&gt;



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



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



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



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



&lt;p&gt;&quot;Sic Semper Tyrannis&quot;&lt;/p&gt;</content>
		<author>
			<name>gby</name>
			<uri>https://firstpost.org</uri>
		</author>
		<source>
			<title type="html">First Post</title>
			<subtitle type="html">פליט Slashdot מספר על החיים, הרב-יקום וכל השאר</subtitle>
			<link rel="self" href="http://firstpost.org/?feed=rss2"/>
			<id>https://firstpost.org</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">המדריך של חתול להתקנת ארץ׳ לינוקס</title>
		<link href="https://hatul.info/2020/06/10/%d7%94%d7%9e%d7%93%d7%a8%d7%99%d7%9a-%d7%a9%d7%9c-%d7%97%d7%aa%d7%95%d7%9c-%d7%9c%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%90%d7%a8%d7%a5%d7%b3-%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/"/>
		<id>https://hatul.info/?p=1065</id>
		<updated>2020-06-10T10:03:21+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;אני מודע לכך שלא כתבתי יותר משש שנים ואני מקווה שמישהו עוד עוקב אחרי הבלוג. אבל לאחרונה קניתי מחשב חדש וכמובן שהתקנתי עליו ארץ׳ וחשבתי שתיאור התהליך יוכל לעזור למישהו. לי לפחות יוכל לעזור בעתיד לדעת מה בדיוק עשיתי.&lt;/p&gt;



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



&lt;p&gt;בהתקנה התבססתי על שני מדריכים עיקריים:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;ויקי: &lt;a href=&quot;https://wiki.archlinux.org/index.php/installation_guide&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;https://wiki.archlinux.org/index.php/installation_guide&lt;/a&gt; (לפעמים מפורט מידי)&lt;/li&gt;&lt;li&gt;מדריך itsfoss: ‏&lt;a href=&quot;https://itsfoss.com/install-arch-linux&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;https://itsfoss.com/install-arch-linux&lt;/a&gt; (ברור מאוד אבל מתקין קצת דברים מיותרים)&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;בתור התחלה, הורדתי את תקליטור ההתקנה של ארץ׳, „צרבתי” אותו על החסן נייד והעליתי את המחשב ממנו.&lt;/p&gt;



&lt;h2&gt;התחברות לרשת האלחוטית&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;wifi-menu&lt;/pre&gt;



&lt;p&gt;או שמתחברים עם כבל לרשת קווית&lt;/p&gt;



&lt;p&gt;בדיקה שמחובר:&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;ping -c3 google.com&lt;/pre&gt;



&lt;h2&gt;עדכון שעון מערכת&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;timedatectl set-ntp true&lt;/pre&gt;



&lt;h2&gt;חלוקת מחיצות עם fdisk&lt;/h2&gt;



&lt;p&gt;אצלי כבר היה מותקן אובונטו מהיצרן ולכן השארתי את שתי המחיצות הראשונות של uefi ומחיצת שחזור ומחקתי את המחיצה של אובונטו&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;fdisk /dev/nvme0n1&lt;/pre&gt;



&lt;p&gt;יצרתי מחיצה ל־swap של 24G, מחיצת שורש של 30G ומחיצת בית של 175G שנשארו (לפי הסדר הזה)&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;mkswap /dev/nvme0n1p3
swapon /dev/nvme0n1p3
mkfs.ext4 /dev/nvme0n1p4
mkfs.ext4 /dev/nvme0n1p5&lt;/pre&gt;



&lt;h2&gt;הגדרת מקורות&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -Sy reflector&lt;br /&gt;cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak&lt;br /&gt;reflector -c &quot;IL&quot; -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist&lt;/pre&gt;



&lt;h2&gt;עיגון&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;mount /dev/nvme0n1p4 /mnt&lt;br /&gt;mount /dev/nvme0n1p5 /mnt/home&lt;/pre&gt;



&lt;h2&gt;התקנה&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacstrap /mnt base linux linux-firmware nano intel-ucode&lt;/pre&gt;



&lt;h2&gt;הגדרת fstab&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab&lt;/pre&gt;



&lt;h2&gt;ביצוע chroot&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;arch-chroot /mnt&lt;/pre&gt;



&lt;h2&gt;הגדרת אזור זמן&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;ln -sf /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime&lt;br /&gt;hwclock --systohc&lt;/pre&gt;



&lt;h2&gt;הגדרת locale&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;nano /etc/locale.gen&lt;/pre&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;en_US.UTF-8 UTF-8&lt;br /&gt;he_IL.UTF-8 UTF-8&lt;/pre&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;locale-gen&lt;/pre&gt;



&lt;h2&gt;הגדרת רשת&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;echo myname &amp;gt; /etc/hostname&lt;br /&gt;nano /etc/hosts&lt;/pre&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;127.0.0.1 localhost&lt;br /&gt;::1 localhost&lt;br /&gt;127.0.1.1 myname.localdomain myname&lt;/pre&gt;



&lt;h2&gt;הגדרת סיסמה&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;passwd&lt;/pre&gt;



&lt;h2&gt;התקנת grub&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S grub efibootmgr&lt;br /&gt;mkdir /boot/efi&lt;br /&gt;mount /dev/nvme0n1p1 /boot/efi&lt;br /&gt;grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi&lt;br /&gt;grub-mkconfig -o /boot/grub/grub.cfg&lt;/pre&gt;



&lt;h2&gt;יצירת משתמש&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;useradd -s /bin/bash -g users -G sys,adm,wheel -m user&lt;br /&gt;passwd user&lt;/pre&gt;



&lt;h2&gt;התקנת ממשק גרפי&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S xorg-server xf86-video-intel&lt;br /&gt;pacman -S eog evince file-roller gdm gedit gnome-calculator gnome-color-manager gnome-control-center gnome-disk-utility gnome-font-viewer gnome-keyring gnome-logs gnome-menus gnome-screenshot gnome-session gnome-settings-daemon gnome-shell gnome-shell-extensions gnome-system-monitor gnome-terminal gvfs gvfs-gphoto2 gvfs-mtp mutter nautilus networkmanager simple-scan totem xdg-user-dirs-gtk&lt;/pre&gt;



&lt;p&gt;לא כל גנום חובה, חלק אני רציתי&lt;/p&gt;



&lt;p&gt;להפעיל את השירותים&lt;/p&gt;



&lt;p&gt;systemctl enable gdm NetworkManager&lt;/p&gt;



&lt;h2&gt;הרשאות ניהול&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S sudo&lt;br /&gt;nano /etc/sudoers&lt;/pre&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;%wheel ALL=(ALL) ALL&lt;/pre&gt;



&lt;h2&gt;התקנת yay&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S base-devel wget&lt;br /&gt;wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay-bin.tar.gz&lt;br /&gt;tar -xzf yay-bin.tar.gz&lt;br /&gt;cd yay-bin&lt;br /&gt;makepkg -si&lt;/pre&gt;



&lt;h2&gt;התקנת גופנים לעברית&lt;/h2&gt;



&lt;p&gt;קצת סיפור להוריד ולבנות את החבילה של הגופנים אז אפשר &lt;a href=&quot;https://drive.google.com/file/d/1IB9tW3EtmfqmYNZouvAXhpRa1b_6TxtX/view?usp=sharing&quot;&gt;להוריד אותה מדרייב&lt;/a&gt;:&lt;/p&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -U ttf-ms-win10-10.0.18362.116-2-any.pkg.tar.xz&lt;br /&gt;yay -S culmus culmus-fancy-ttf ttf-alef&lt;/pre&gt;



&lt;h2&gt;התקנת דפדפנים&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S firefox-i18n-he chromium&lt;/pre&gt;



&lt;h2&gt;התקנת ליברה אופיס&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;pacman -S libreoffice-fresh-he&lt;/pre&gt;



&lt;h2&gt;עוד כמה תוכנות חשובות בעיני (חלק צריך להגדיר)&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;libhdate-glib vlc mlocate reflector zsh zsh zsh-completions zoom parcellite&lt;/pre&gt;



&lt;h2&gt;וזהו&lt;/h2&gt;



&lt;pre class=&quot;wp-block-preformatted&quot;&gt;reboot&lt;/pre&gt;



&lt;p&gt;אם התקנתם הכול נכון אז המערכת תעלה ותוכלו להינות ממנה. בהצלחה!&lt;/p&gt;</content>
		<author>
			<name>חתול</name>
			<uri>https://hatul.info</uri>
		</author>
		<source>
			<title type="html">תוכנה חופשית – עמיעד בראלי – פיתוח אתרי וורדפרס מתקדמים</title>
			<subtitle type="html">כשצריך להתחיל לכתוב קוד</subtitle>
			<link rel="self" href="https://hatul.info/tag/%D7%AA%D7%95%D7%9B%D7%A0%D7%94-%D7%97%D7%95%D7%A4%D7%A9%D7%99%D7%AA/feed/"/>
			<id>https://hatul.info</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">סדנאות QGIS ביוני 2020</title>
		<link href="https://kaplanopensource.co.il/2020/05/26/%d7%a1%d7%93%d7%a0%d7%90%d7%95%d7%aa-qgis-%d7%91%d7%99%d7%95%d7%a0%d7%99-2020/"/>
		<id>http://kaplanopensource.co.il/?p=1288</id>
		<updated>2020-05-26T10:15:16+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;ביחד עם משבר הקורונה, אנשים רבים גילו כי לצד העבודה מהבית הרישיון לתוכנות ה-GIS שלהם נשאר במשרד. סדנאות ה-QGIS שלנו מיועדות למי שרוצה להשתחרר ממגבלות עולם ה-GIS הקנייני ולעבוד עם תוכנה ללא מגבלות על שימוש והתקנות וזאת מבלי לוותר על יכולות של התוכנה.&lt;/p&gt;
&lt;p&gt;לצד סדנה בהתאמה אישית לארגונית (דרך zoom בתקופת הקורונה) המאפשרת גמישות מקסימלית של התכנים, אנחנו מפעילים סדנאות חודשיות עם תוכן קבוע. סדנאות QGIS שלנו ביוני 2020:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;מה זה QGIS ופלאגאין עבור מידע ישראלי פתוח (17 ביוני, דרך Zoom)&lt;/li&gt;
&lt;li&gt;סדנת מבוא ל-QGIS (14 ביוני, דרך Zoom)&lt;/li&gt;
&lt;li&gt;סדנת QGIS למתכנני ערים (15 ביוני, דרך Zoom)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;סדנאות המבוא מיועדות לאנשים שרוצים לעבוד עם מפות ולבצע ניתוחים מרחביים במסגרת תחומי העיסוק שלהם: כלכלנים, מהנדסות, אדריכלים, מתכננות ערים, אקולוגים, ארכיאולוגיות, גיאולוגים ועוד. הן מיועדת גם למי שלא מכיר GIS או מכיר ברמה בסיסית.&lt;/p&gt;
&lt;p&gt;ניתן להשאיר פרטים &lt;a href=&quot;https://goo.gl/forms/Ea88W2coVFFA5A792&quot;&gt;בטופס ההתעניינות&lt;/a&gt; ונחזור אליכם עם פרטים וכיצד להרשם או להצטרף ל&lt;a href=&quot;https://kaplanopensource.co.il/newsletter/&quot;&gt;ניוזלטר החודשי&lt;/a&gt; שלנו כדי לקבל עדכונים על סדנאות עתידיות.&lt;/p&gt;</content>
		<author>
			<name>Kaplan</name>
			<uri>https://kaplanopensource.co.il</uri>
		</author>
		<source>
			<title type="html">קפלן ייעוץ קוד פתוח</title>
			<subtitle type="html">המקום בו עסקים וקהילה נפגשים</subtitle>
			<link rel="self" href="https://kaplanopensource.co.il/feed/"/>
			<id>https://kaplanopensource.co.il</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">זכרונות מגלגול קודם בגלקסיה רחוקה</title>
		<link href="https://firstpost.org/?p=180"/>
		<id>https://firstpost.org/?p=180</id>
		<updated>2020-04-12T15:08:11+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;בכנס אייקון 2019 נתתי הרצאה על השורשים הבודהיסטים וטאואיסטים של מסדר הג'די מסדרת סרטי מלחמת הכוכבים. ההרצאה ההיא לא הוקלטה אבל בצוק העיתים וברוח הנדיבות עשיתי שחזור שלה בזום עם כמה א.נשים אמיצים והנה התוצאה לפניכם.&lt;/p&gt;



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



&lt;p&gt;מעבר לכך בסוף ההרצאה יש קטע בונוס מיוחד – גילוי של גלגולו הנוכחי של יודה, כאן ועכשיו!&lt;/p&gt;



&lt;p&gt;תהנו!&lt;/p&gt;



&lt;figure class=&quot;wp-block-video aligncenter&quot;&gt;&lt;video controls=&quot;&quot; src=&quot;http://firstpost.org/files/memory.mp4&quot;&gt;&lt;/video&gt;&lt;/figure&gt;</content>
		<author>
			<name>gby</name>
			<uri>https://firstpost.org</uri>
		</author>
		<source>
			<title type="html">First Post</title>
			<subtitle type="html">פליט Slashdot מספר על החיים, הרב-יקום וכל השאר</subtitle>
			<link rel="self" href="http://firstpost.org/?feed=rss2"/>
			<id>https://firstpost.org</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Hot To Generate a Custom Color Palette For Cacti Aggregated Graphs</title>
		<link href="https://blog.rabin.io/linux/hot-to-generate-a-custom-color-palette-for-cacti-aggregated-graphs"/>
		<id>https://blog.rabin.io/?p=744</id>
		<updated>2020-03-15T23:17:38+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;I had a use case where I wanted to colorizes an aggregated graph with a nice gradient color, so I looked to see how to add a new color template to Cacti, but the process is not usable when one need to add a lot of colors, in my case I was looking to add 110 different colors, and using the webUI was not a options. So I looked on the database schema and found that the color template is managed by 3 tables. One manage the template names &lt;code&gt;plugin_aggregate_color_templates&lt;/code&gt;, and the other &lt;code&gt;plugin_aggregate_color_template_items&lt;/code&gt; is a pivot table which manage the colors per template by referencing the &lt;code&gt;colors&lt;/code&gt; table and the &lt;code&gt;plugin_aggregate_color_template&lt;/code&gt; table.&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_745&quot; style=&quot;width: 663px;&quot;&gt;&lt;a href=&quot;https://blog.rabin.io/wp-content/uploads/2020/03/cacti-color-template-tables.png&quot; title=&quot;&quot;&gt;&lt;img alt=&quot;cacti-color-template-tables&quot; class=&quot;wp-image-745&quot; height=&quot;211&quot; src=&quot;https://blog.rabin.io/wp-content/uploads/2020/03/cacti-color-template-tables.png&quot; width=&quot;653&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; id=&quot;caption-attachment-745&quot;&gt;Cacti Database Tables Related To Colors&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;span id=&quot;more-744&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Create a color Palette&lt;/h3&gt;
&lt;p&gt;First thing first we need to add our new colors to the &lt;code&gt;colors&lt;/code&gt; table, so I looked a bit and found &lt;a class=&quot;broken_link&quot; href=&quot;https://www.strangeplanet.fr/work/gradient-generator/index.php&quot;&gt;this nice website&lt;/a&gt; which allow you to set few colors and define the number of steps between the colors, and I used &lt;a href=&quot;https://www.color-hex.com/color-palette/18840&quot;&gt;another site to find&lt;/a&gt; a nice palette for “fire” colors. The cool thing for was that the site will auto generate an PHP array snippet which you can copy and use.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.rabin.io/wp-content/uploads/2020/03/strangeplanet.fr_.png&quot; title=&quot;&quot;&gt;&lt;img alt=&quot;strangeplanet.fr&quot; class=&quot;aligncenter wp-image-746 size-medium&quot; height=&quot;300&quot; src=&quot;https://blog.rabin.io/wp-content/uploads/2020/03/strangeplanet.fr_-267x300.png&quot; width=&quot;267&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;The Code&lt;/h3&gt;
&lt;p&gt;Now we can write a small script which will take the array and generate a new color templates for us&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</content>
		<author>
			<name>Rabin</name>
			<uri>https://blog.rabin.io</uri>
		</author>
		<source>
			<title type="html">FOSS – Rabin.IO</title>
			<subtitle type="html">/home/rabin.io/notes</subtitle>
			<link rel="self" href="https://blog.rabin.io/tag/foss/feed"/>
			<id>https://blog.rabin.io</id>
		</source>
	</entry>

	<entry>
		<title type="html">Don't Let Your Fear Of Nation-State Hackers Blind You</title>
		<link href="http://blog.ikotler.org/2019/12/dont-let-your-fear-of-nation-state.html"/>
		<id>tag:blogger.com,1999:blog-5189431754787123106.post-963277604807108328</id>
		<updated>2019-12-06T21:24:42+00:00</updated>
		<content type="html">Mr. Magoo is an old cartoon character famous for his inflated sense of status and an extreme case of myopia, made worse by his refusal to wear corrective glasses. As a result of his poor vision and ego, Magoo would find himself in precarious — and hilarious — situations because he was unable to see the danger right in front of him. Typically, the oblivious Magoo would leave a trail of destruction behind him..&lt;br /&gt;
&lt;br /&gt;
Enterprises today approach security a lot like Mr. Magoo, operating with the idea that they are more important than they really are and therefore are unable to see the real risks that beset them. The result? A lot of unnecessary damage.&lt;br /&gt;
&lt;br /&gt;
Read the full article at Forbes &lt;a href=&quot;https://www.forbes.com/sites/forbestechcouncil/2019/12/02/dont-let-your-fear-of-nation-state-hackers-blind-you/#35c33e0d7579&quot;&gt;here&lt;/a&gt;</content>
		<author>
			<name>Itzik Kotler</name>
			<email>noreply@blogger.com</email>
			<uri>http://blog.ikotler.org/</uri>
		</author>
		<source>
			<title type="html">I hack, therefore I am</title>
			<link rel="self" href="http://www.blogger.com/feeds/5189431754787123106/posts/default"/>
			<id>tag:blogger.com,1999:blog-5189431754787123106</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="en-US">Using Ansible To Manage Trust-Point Certificates In Cisco ASA</title>
		<link href="https://blog.rabin.io/sysadmin/using-ansible-to-manage-trust-point-certificates-in-cisco-asa"/>
		<id>https://blog.rabin.io/?p=727</id>
		<updated>2019-11-19T09:52:14+00:00</updated>
		<content type="html" xml:lang="en-US">&lt;p&gt;For some time now, I was looking for a way to Integrate Let’s Encrypt (LE) with My Cisco ASA, and use LE to issue the certificates for the VPN. And now Ansible is in a good place with its Network Modules to allow this without much of a problem.&lt;/p&gt;
&lt;p&gt;I won’t go over the procedure of how I issue/renew the certificates, I will just mention that I use the DNS alias option, as I find it the most useful option, as it doesn’t require me to punch holes in my firewall to allow incoming connection to validate the requests.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-727&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;My Playbook looks like this,&lt;/p&gt;
&lt;pre class=&quot;brush: yaml; title: ; notranslate&quot;&gt;---
# see:
# - https://docs.ansible.com/ansible/latest/modules/asa_config_module.html
# - https://docs.ansible.com/ansible/latest/modules/asa_command_module.html

- name: Config CiscoASA
  hosts: CiscoASA
  connection: network_cli
  gather_facts: false
  become: true
  become_method: enable
  vars:
    ansible_user: ansible
    ansible_password: &quot;in line or use vault!&quot;
    cert_file: &quot;vpn.pfx&quot;
    cert_pass: &quot;in line or use vault!&quot;
    config_file: &quot;asa.conf&quot;

  tasks:

    - name: Get Certificate
      set_fact:
        cert: &amp;gt;
          {{ (lookup('file', cert_file) | b64encode | regex_replace('(.{1,64})', '\1|')).split('|') | list + [ 'quit' ] }}
      tags: [ cert ]

    - name: Create A TrustPoint
      asa_config:
        lines:
          - crypto ca trustpoint SSL-Trustpoint-Ansible
        after:
          - enrollment terminal

    - name: Import A New Certificate Into The TrustPoint
      asa_config:
        replace: block
        parents: &quot;crypto ca import SSL-Trustpoint-Ansible pkcs12 {{ cert_pass }} nointeractive&quot;
        lines: &quot;{{ cert }}&quot;
      notify:
        - Set SSL Trust-Point

  handlers:

    - name: Set SSL Trust-Point
      asa_config:
        save: true
        lines:
          - ssl trust-point SSL-Trustpoint-Ansible inside
          - ssl trust-point SSL-Trustpoint-Ansible outside
&lt;/pre&gt;
&lt;h2&gt;Extra&lt;/h2&gt;
&lt;h3&gt;Generate PFX from Cert and Key&lt;/h3&gt;
&lt;pre class=&quot;brush: bash; title: ; notranslate&quot;&gt;#!/bin/bash

CA=ca.cer
#fullchain.cer
CER=vpn.cer
KEY=vpn.key
OUT=vpn.pfx

openssl pkcs12 -export \
-inkey ${KEY} \
-in ${CER} \
-certfile ${CA} \
-out ${OUT}

&lt;/pre&gt;</content>
		<author>
			<name>Rabin</name>
			<uri>https://blog.rabin.io</uri>
		</author>
		<source>
			<title type="html">FOSS – Rabin.IO</title>
			<subtitle type="html">/home/rabin.io/notes</subtitle>
			<link rel="self" href="https://blog.rabin.io/tag/foss/feed"/>
			<id>https://blog.rabin.io</id>
		</source>
	</entry>

	<entry>
		<title type="html">MYSQL/BTRFS/NVME failure</title>
		<link href="https://skliarie.blogspot.com/2019/10/mysqlbtrfsnvme-failure.html"/>
		<id>tag:blogger.com,1999:blog-7511640597328894129.post-3451705441551242945</id>
		<updated>2019-10-24T15:02:52+00:00</updated>
		<content type="html">It is a very bad idea to run database (especially production one with lots of I/O) on BTRFS because the filesystem at any random time might become readonly:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Oct 24 12:30:22 db02 kernel: BTRFS: error (device nvme0n1) in btrfs_run_delayed_refs:2936: errno=-28 No space left&lt;br /&gt;Oct 24 12:30:22 db02 kernel: BTRFS info (device nvme0n1): forced readonly&lt;/blockquote&gt;
&lt;div&gt;
And then you find that you need to do rebalance. You try and find out that rebalance can not be done because - you guessed it - there is no space left. They suggest to delete couple of snapshots though. You delete them, start rebalance and now the whole filesystem is stuck completely.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you need HA mysql db with snapshots, then you should go with mysq/LVM/DRBD path, see this link for insight: https://rarforge.com/w/index.php/2_Node_Cluster:_Dual_Primary_DRBD_%2B_CLVM_%2B_KVM_%2B_Live_Migrations&lt;/div&gt;</content>
		<author>
			<name>Arie Skliarouk</name>
			<email>noreply@blogger.com</email>
			<uri>https://skliarie.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Linux zealot</title>
			<link rel="self" href="https://www.blogger.com/feeds/7511640597328894129/posts/default"/>
			<id>tag:blogger.com,1999:blog-7511640597328894129</id>
		</source>
	</entry>

	<entry>
		<title type="html">Demystifying Criminal Hackers</title>
		<link href="http://blog.ikotler.org/2019/09/demystifying-criminal-hackers.html"/>
		<id>tag:blogger.com,1999:blog-5189431754787123106.post-6091604775722194290</id>
		<updated>2019-09-23T23:38:29+00:00</updated>
		<content type="html">As I write these pieces for Forbes Tech Council, I’ve tried to chip away at the Hollywood reputation that hackers have been given over the years. That reputation often keeps people &lt;a href=&quot;https://www.forbes.com/sites/forbestechcouncil/2018/11/30/staying-one-step-ahead-of-criminal-hackers/#7cd3bd9d14c6&quot;&gt;from making good decisions&lt;/a&gt; about how to protect their networks and data, keeps people focused on the &lt;a href=&quot;https://www.forbes.com/sites/forbestechcouncil/2018/06/05/fixating-on-vulnerabilities-is-a-vulnerability/&quot;&gt;wrong security priorities&lt;/a&gt;, and causes people &lt;a href=&quot;https://www.forbes.com/sites/forbestechcouncil/2019/08/02/defending-against-hackings-long-game-it-aint-over-til-its-over/#75e653d53508&quot;&gt;to give up before the game is over&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
It’s important to keep in mind, however, that while criminal hackers may be smart and devious, they are also, in a sense, entrepreneurs who are in the game to make a quick buck. As such, they realize that hacking costs money and so they will do what they can to keep their operating costs low. Why, then, would you expect a criminal hacker to expend time and money developing specialized tools when there are easier ways to get to what they want?&lt;br /&gt;
&lt;br /&gt;
Read the full article at Forbes &lt;a href=&quot;https://www.forbes.com/sites/forbestechcouncil/2019/09/19/demystifying-criminal-hackers/#476999a51c1d&quot;&gt;here&lt;/a&gt;</content>
		<author>
			<name>Itzik Kotler</name>
			<email>noreply@blogger.com</email>
			<uri>http://blog.ikotler.org/</uri>
		</author>
		<source>
			<title type="html">I hack, therefore I am</title>
			<link rel="self" href="http://www.blogger.com/feeds/5189431754787123106/posts/default"/>
			<id>tag:blogger.com,1999:blog-5189431754787123106</id>
		</source>
	</entry>

	<entry>
		<title type="html" xml:lang="he-IL">Debconf18 – יום ראשון</title>
		<link href="https://kaplanopensource.wordpress.com/2018/07/31/debconf18-%d7%99%d7%95%d7%9d-%d7%a8%d7%90%d7%a9%d7%95%d7%9f/"/>
		<id>http://kaplanopensource.wordpress.com/?p=1272</id>
		<updated>2018-07-31T14:40:32+00:00</updated>
		<content type="html" xml:lang="he-IL">&lt;p&gt;את היום הראשון של הכנס פתחתי כרגיל בדוכן הרשמה (front desk) והייתי שם עד הצהרים כדי שהצוות ירשום את הגל אנשים שהגיעו.&lt;/p&gt;
&lt;p&gt;לצערי הכנסים של דביאן נפתחים מאוד בעצלתיים מבחינת תוכן – יש הרצאת/טקס פתיחת ואחרי אין ישר רצף גדול של הרצאות אלא טפטוף קטן של נושאים והרצאות. קצת מאכזב מבחינתי. ומצד שני, אפשר לי להתחיל לעבוד על החבילות של עברית בדביאן בלי לדאוג לפספס תוכן כלשהו. אבל לפני שאפשר לעבוד על החבילות, צריך לייצר סביבה מתאימה. לקח לי זמן להוריד חלודה לגבי מה צריך, ואיך לייצר משהו שיודע לבנות בתוך chroot (גם כדי שהבניה תהיה נקייה, וגם כי אני משתמש ב-testing בעוד שהבניה נעשית ב-unstable). בעזרת כמה תזכורות מ-Bálint הכל הסתדר, ויש סביבה עובדת עם sbuild.&lt;/p&gt;
&lt;p&gt;השלב השני היה להתחיל להמיר את ההיסטוריה של הצוות מ-SVN ל-GIT ואז לדחוף את זה לשרת ה-GitLab החדש של דביאן. עשיתי את זה בנפרד עבור כל חבילה, כאשר הראשונה בתור היא Hspell כי צפריר הספיק להכין את הרוב מראש. ואחר כך עבדתי על המרת Culmus כי לא הייתי רוצה שהגרסה הבאה תצא בלי פונטים בעברית (על הדרך כבר הועלתה גרסה 0.132). כל המאגרים זמינים תחת Debian Hebrew Packagers בכתובת &lt;a href=&quot;https://salsa.debian.org/hebrew-team&quot;&gt;https://salsa.debian.org/hebrew-team&lt;/a&gt; . למי שצריך לעשות משהו דומה, הכלי להמרה היא git svn clone ואפשר להשתמש בהוראות שיש באתר git-scm.com בכתובת &lt;a href=&quot;https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git&quot;&gt;https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git&lt;/a&gt; . על בסיס הפקודות שלהם עוד עשיתי כמה שינויים קלים, אבל החלקים החשובים נמצאים שם.&lt;/p&gt;
&lt;p&gt;בין לבין שמעתי את הדיווח השנתי של Chris Lamb במסגרת תפקידו כ-Debian Project Leader. בין השאר גיליתי שם כי דביאן תחגוג השנה יום הולדת 25 באמצע אוגוסט, וישר החלטתי לפתוח &lt;a href=&quot;https://www.meetup.com/Open-Source-and-Free-Software-in-Israel/events/253261846/&quot;&gt;event&lt;/a&gt; כדי לחגוג עם עוד אנשים. נתראה שם בקרוב (: בנוסף, גיליתי כי המעבר של דביאן ל-GitLab נובע בין השאר גם מהשינוי שלהם בנושא ה-Content License Agreement ושינוי ל-Developer Certificate of Origin מה שמאפשר ליותר אנשים לתרום קוד בלי לוותר על הזכויות שלהם או לקרוא מסמך משפטי כבד. שאפו ל-GitLab, ואיזה כיף לעבור לעבוד במערכת מתקדמת.&lt;/p&gt;</content>
		<author>
			<name>Kaplan</name>
			<uri>https://kaplanopensource.wordpress.com</uri>
		</author>
		<source>
			<title type="html">תוכנה חופשית בעברית</title>
			<subtitle type="html">מיומנו של חבר בקהילת התוכנה החופשית בישראל</subtitle>
			<link rel="self" href="https://kaplanopensource.wordpress.com/feed/atom/"/>
			<id>http://kaplanopensource.wordpress.com/feed/atom/</id>
		</source>
	</entry>

</feed>
