(بإذن من Wayback Machine http://www.archive.org/)
ملخص سريع
الحاضرون: gott, hezekiah, jeremiah, jrand0m, mihi, Neo, nop, WinBear
سجل الاجتماع
--- تم فتح السجل Tue Jul 15 17:46:47 2003 17:46 < gott> مرحباً. 17:46 <@nop> مجرد تنبيه مسبق بشأن صمتي 17:46 <@hezekiah> Tue Jul 15 21:46:49 UTC 2003 17:47 <@hezekiah> حسناً. بدأ اجتماع iip-dev. 17:47 <@hezekiah> هل هو الاجتماع الثامن والأربعون أم التاسع والأربعون؟ 17:47 < jrand0m> nop> لهذا من الضروري جداً أن نحسم معمارية الـ router بأسرع ما يمكن. أفهم أن الناس تختلف سرعتهم، وعلينا التقسيم بحيث تتمكن المكونات المختلفة من التقدم وفقاً لذلك 17:47 < mihi> التاسع والأربعون 17:47 <@hezekiah> حسناً! مرحباً بكم في الاجتماع التاسع والأربعين لـ iip-dev! 17:47 < jrand0m> تبقى لي ثلاثة أيام في عملي، وبعدها سأكرّس أكثر من 90 ساعة/ أسبوع لدفع هذا إلى الأمام 17:48 < jrand0m> أعلم ولا أتوقع من الجميع أن يتمكنوا من ذلك، ولهذا نحتاج إلى التقسيم 17:48 < jrand0m> مرحباً hezekiah :) 17:48 <@hezekiah> لول 17:48 <@nop> للرد على ذلك 17:48 <@hezekiah> سأنتظر دقيقة. ثم يمكننا وضع جدول الأعمال. :) 17:48 <@nop> أمن معمارية الـ router يعتمد أيضاً على ألا تتعجلوا 17:49 <@nop> إذا فعلنا 17:49 <@nop> سنغفل 17:49 <@nop> ما قد يتركنا ننظّف فوضى كبيرة لاحقاً 17:49 -!- Rain [Rain@anon.iip] قد خرج [I Quit] 17:49 < jrand0m> nop> مختلف. ما زلنا نستطيع بناء طبقة التطبيقات وواجهات API دون تنفيذ الـ router (أو حتى معرفة كيف ستعمل الشبكة) 17:49 <@nop> أتفق مع ذلك 17:50 <@nop> أتحدث تحديداً عن الشبكة التحتية 17:50 < jrand0m> إذا استطعنا الاتفاق على واجهة الـ API التي أرسلتها، فذلك هو التقسيم الذي نحتاجه 17:50 < jrand0m> صحيح، تنفيذ الـ router وتصميم الشبكة لم يُنجزا بعد 17:50 <@nop> حسناً 17:50 <@nop> أوه، أستطيع بالتأكيد أن أتفق مع واجهة الـ API خاصتك حتى الآن 17:51 <@hezekiah> jrand0m: مشكلة واحدة. 17:51 < jrand0m> تفضل hezekiah 17:51 <@hezekiah> ستبدو مختلفة إذا نفّذتها بلغة C. 17:51 < jrand0m> ليس مختلفاً كثيراً 17:51 < gott> يا إلهي 17:51 < jrand0m> حروف كبيرة أقل، واستبدال الكائنات بـ structs 17:51 < gott> ما اللغات التي يفكّر الناس في تنفيذها بها؟ 17:51 < jrand0m> (لواجهة الـ API) 17:51 <@hezekiah> أمم، jrand0m؟ لا يوجد 'byte[]' في C. 17:51 < jrand0m> gott> اقرأ أرشيف البريد لبعض الإجابات على ذلك 17:52 <@hezekiah> ستستخدم على الأرجح مؤشّرات من نوع void* مع عدد صحيح لتحديد الطول. 17:52 < jrand0m> hezekiah> إذن unsigned int[] 17:52 < gott> jrand0m: للمرة الأولى، حرب دينية لست جزءاً منها 17:52 <@hezekiah> إن لم تخنّي الذاكرة (ساعدني هنا يا nop)، لا يمكنك ببساطة إرجاع unsigned int[] من دالة. 17:53 <@hezekiah> gott: على النقيض من ماذا؟ شبه-كود؟ 17:53 < jrand0m> صحيح، تغييرات تركيبية. لكن نعم، إن كانت هناك فروق حقيقية، نحتاج إلى حسمها بأسرع وقت. (مثل، اليوم) ربما يكون الآن وقتاً مناسباً للنظر في البريد الذي أرسلته بعنوان "high level router architecture and API" ومراجعته؟ 17:54 <@hezekiah> nop؟ UserX؟ هل أنتما مستعدان لذلك؟ 17:54 < jrand0m> ليس مختلفاً جداً، لكنه مختلف على أي حال، نعم. ولهذا قلت Java API في بريد اليوم :) 17:54 -!- WinBear [WinBear@anon.iip] قد انضمّ إلى #iip-dev 17:55 <@nop> انتظر 17:55 <@nop> أقرأ ما سبق 17:55 -!- mihi_2 [~none@anon.iip] قد انضمّ إلى #iip-dev 17:55 -!- mihi غُيّر اسمه إلى nickthief60234 17:55 -!- mihi_2 غُيّر اسمه إلى mihi 17:55 < jrand0m> مرحباً بعودتك mihi 17:55 < gott> بالمناسبة، هل يتم تسجيل هذا مباشرة؟ 17:55 -!- nickthief60234 [~none@anon.iip] قد خرج [EOF From client] 17:55 <@hezekiah> gott: نعم. 17:55 < mihi> الازدواجية تحكم ;) 17:55 < gott> سأقرأه لاحقاً إذاً. 17:55 -!- gott [~gott@anon.iip] قد غادر #iip-dev [gott] 17:56 <@nop> حسناً 17:56 <@nop> نعم 17:56 < WinBear> jrand0m: مرحباً 17:56 <@nop> بالتأكيد هناك اختلافات 17:56 <@nop> ما نحتاجه 17:56 < jrand0m> أهلاً WinBear 17:56 <@nop> هو فريق من مطوّرين معيّنين لكتابة عناصر التحكم على مستوى الـ API الرئيسية لهذه اللغات 17:56 <@nop> نعلم أن jrand0m يمكنه التعامل مع Java 17:56 <@nop> وربما يمكنه أن يعمل مع thecrypto أيضاً 17:56 <@nop> وhezekiah والفريق يمكنهم القيام بـ C 17:56 <@nop> وjeremiah إن كان راغباً 17:56 <@nop> يمكنه القيام بـ Python 17:56 <@hezekiah> أستطيع C++ أيضاً! ;-) 17:56 <@nop> حسناً 17:56 <@nop> C++ أيضاً 17:57 <@hezekiah> لول 17:57 <@nop> قد يعمل C++ 17:57 <@nop> مع C 17:57 <@nop> إذا لم تُفرِط في استخدام القوالب 17:57 < jrand0m> هه 17:57 <@hezekiah> لول 17:57 <@hezekiah> في الواقع، بينما يستطيع MSVC ربط ملفات الكائنات C وC++، يبدو أن gcc لا يحب ذلك. 17:57 <@nop> أي التزم بـ structs متوافقة مع C، أم أن ذلك غير عملي؟ 17:57 < jrand0m> أول سؤال، قبل ذلك، ما التطبيقات التي ستستخدم هذه الـ APIs؟ أعرف تطبيقات سترغب في استخدام Java، هل سيكون iproxy بلغة C؟ 17:58 <@hezekiah> nop: لا أظن أن C و C++ متوافقان على مستوى الكائنات. 17:58 <@nop> حسناً 17:58 <@hezekiah> nop: C++ لن يتوافق مع C بشكل أفضل كثيراً من Java. 17:58 <@nop> ربما USerX يستطيع القيام بـ C 17:58 <@nop> وأنت يمكنك تولّي C++ 17:58 <@hezekiah> We don 17:58 <@nop> ؟ 17:58 <@hezekiah> لسنا بحاجة حتى إلى _استخدام_ C++ إن لم ترغبوا. فقط أنا أفضّلها. 17:59 <@nop> حسناً، الأمر هو 17:59 <@nop> هناك الكثير من مطوّري C++ 17:59 <@nop> خصوصاً في عالم مايكروسوفت 17:59 <@hezekiah> حتى في عالم لينكس. (انظر: KDE وQt.) 17:59 < jrand0m> C و C++ متوافقان ثنائياً إن قمت فقط بعمل .so أو .a 17:59 < jrand0m> (بالمناسبة) 18:00 <@nop> هل يمكن أن تكون C بديلاً جيداً لـ C++، أي أن مطوّري C++ سيكونون قادرين على التعامل مع واجهة C API بسهولة أكبر من واجهة C++ مع مطوّر C؟ 18:00 <@hezekiah> jrand0m: نعم. يمكنك غالباً أن تملك مكتبات ... ولكن إذا كنت 18:00 <@hezekiah> jrand0m: لا يمكنك حتى استخدام الأصناف (classes)، فهذا يُفرغ الهدف من مضمونه. 18:00 <@nop> صحيح 18:00 <@nop> لنبقَ مع C 18:01 <@nop> لأن مطوّري C++ ما زالوا يستطيعون استدعاء مكتبة C بسهولة نسبية 18:01 <@hezekiah> إذا كان على وحدة استدعاء دوال وحدة أخرى، فمن الأفضل أن تكونا باللغة نفسها. 18:01 <@hezekiah> nop: مطوّرو C++ سيعرفون C بما يكفي ... رغم أنه قد يتطلب بعض الجهد إن لم /يتعلموا/ C. 18:02 <@hezekiah> ومع ذلك، مطوّرو C لن يعرفوا C++ إذ إن C مجرد مجموعة فرعية من C++. 18:02 -!- logger_ [~logger@anon.iip] قد انضمّ إلى #iip-dev 18:02 -!- Topic for #iip-dev: ستتوفر ملفات السجل على الإنترنت بعد الاجتماع: http://wiki.invisiblenet.net/?Meetings 18:02 [Users #iip-dev] 18:02 [@hezekiah] [+Ehud ] [ leenookx] [ moltar] [ tek ] 18:02 [@nop ] [ jeremiah] [ logger_ ] [ Neo ] [ WinBear] 18:02 [@UserX ] [ jrand0m ] [ mihi ] [ ptsc ] 18:02 -!- Irssi: #iip-dev: إجمالي 14 لقباً [3 مشرفين، 0 نصف-مشرف، 1 بصوت، 10 عاديون] 18:02 < jrand0m> صحيح 18:02 -!- Irssi: تمت مزامنة الانضمام إلى #iip-dev خلال 9 ثوانٍ 18:02 < jrand0m> (مع JMS :) 18:02 <@nop> نعم 18:03 -!- أنت الآن معروف باسم logger 18:03 < jrand0m> حسناً، هل يمكننا مراجعة المعمارية العامة لِنرى ما إذا كانت واجهات الـ API ذات صلة أصلاً أولاً؟ 18:03 <@nop> حسناً 18:04 < jrand0m> :) 18:04 < jrand0m> حسناً، انظروا البريد الذي أرسلته مع routerArchitecture.webp. أي آراء حول ذلك الفصل؟ 18:04 -!- tek [~tek@anon.iip] قد خرج [] 18:05 < WinBear> jrand0m: هل هذا على الويكي؟ 18:05 < jrand0m> WinBear> لا، على قائمة البريد، رغم أن الأرشيفات متوقفة. دعني أضيفه إلى الويكي 18:06 <@hezekiah> صحّحوني إن كنت مخطئاً ... 18:07 <@hezekiah> ... لكن يبدو أننا سنملك ثلاث واجهات API منفصلة متشابهة قدر الإمكان. 18:07 <@hezekiah> صحيح؟ 18:07 < jrand0m> نعم hezekiah 18:07 <@hezekiah> وبما أن كل API بلغة مختلفة، فهل سيكون لكلٍ تنفيذ منفصل؟ 18:07 < jrand0m> نعم 18:07 <@hezekiah> أم هل ثمة طريقة لـ Java أو Python للوصول إلى مكتبة C؟ 18:08 < jrand0m> نعم، لكننا لا نريد سلوك ذلك المسار 18:08 < mihi> لـ Java: JNI 18:08 <@hezekiah> إذن هذا الحديث عن Java وC وC++ وPython إلخ يعملون معاً غير ذي جدوى لأنهم لن يفعلوا؟ 18:08 < jrand0m> كيف أُرفِق صورة في الويكي؟ 18:08 <@hezekiah> لكل API واجهة خلفية خاصة بها مكتوبة بتلك اللغة. 18:08 < jrand0m> لا يا hezekiah، انظر إلى المخطط 18:09 <@hezekiah> أوه، طبعاً! 18:09 <@hezekiah> واجهات الـ API لا ترتبط بواجهة خلفية. 18:10 <@hezekiah> إنها تتخاطب عبر sockets. 18:10 < jrand0m> نعم سيدي 18:10 <@hezekiah> لا يزال هذا مربكاً قليلاً. 18:10 <@hezekiah> أعطني لحظة هنا. :) 18:11 <@hezekiah> حسناً. ما الشيء الموسوم بـ 'transport'؟ 18:11 < jrand0m> مثلاً، transport لـ HTTP ثنائي الاتجاه، transport لـ SMTP، transport لمقبس عادي، مقبس HTTP يستعلم بشكل دوري، إلخ 18:11 < jrand0m> الشيء الذي ينقل الـ بايتات بين الـ routers 18:12 <@hezekiah> حسناً. 18:12 <@hezekiah> إذن المخطط الذي أنظر إليه يُظهر حاسوب شخص واحد. 18:12 <@hezekiah> لديه router يتخاطب مع حواسيب الآخرين عبر الـ transports. 18:12 < jrand0m> صحيح 18:12 <@hezekiah> الشخص 1 (Alice) لديه تطبيقان يعملان. 18:12 <@hezekiah> أحدهما بـ C والآخر بـ Java. 18:13 <@hezekiah> كلاهما مرتبط بمكتبة (وهي الـ API). 18:13 < jrand0m> كلاهما "مرتبط" بمكتبتين منفصلتين (واجهات الـ API) 18:13 <@nop> مفهوم بسيط 18:13 <@nop> نعم 18:13 <@hezekiah> تلك المكتبات تأخذ المُدخل من البرنامج، تُشفّره، وترسله عبر sockets (UNIX أو TCP) إلى الـ router ... وهو برنامج آخر تُشغّله Alice. 18:13 < jrand0m> صحيح 18:14 <@hezekiah> حسناً. إذن الأمر أشبه بأن isproxy مقسّم إلى جزأين. 18:14 < jrand0m> بالضبط :) 18:14 <@hezekiah> جزء منخفض المستوى ومكتوب بلغة C، والآخر عالي المستوى ومكتوب بأي لغة كانت. 18:14 < jrand0m> تماماً 18:14 <@hezekiah> حسناً. فهمت. :) 18:14 < jrand0m> w00t 18:14 <@hezekiah> إذاً ليست هناك حاجة لأن تتوافق أي لغة مع أخرى. 18:14 < jrand0m> WinBear> آسف، لا أستطيع وضعه على الويكي لأنها تقبل النص فقط :/ 18:15 <@hezekiah> وبما أنها جميعاً تتخاطب مع الـ router عبر sockets، يمكنك كتابة واجهة API بلغة PASCAL ولن يمانع التصميم ذلك. 18:15 <@nop> نعم 18:15 <@nop> أيّاً كان 18:15 < jrand0m> صحيح 18:15 <@nop> إنه يتعامل مع أي sockets 18:15 < jrand0m> رغم أن بعض الأشياء تحتاج إلى توحيد (مثل هياكل البيانات لـ Destination وLease، إلخ) 18:15 < WinBear> jrand0m: بدأت تتكوّن لدي فكرة عامة بناءً على ما يقوله hezekiah 18:15 < jrand0m> تمام 18:16 <@hezekiah> jrand0m: صحيح. بنية وترتيب الـ bytes التي تمر عبر ذلك المقبس محدّدة في تصميم ما في مكانٍ ما 18:16 <@hezekiah> في مكانٍ ما. 18:17 <@hezekiah> لكن ما زال بإمكانك تنفيذ طريقة إرسال واستقبال تلك الـ bytes بأي طريقة تروق لك. 18:17 <@nop> WinBear: إنها الطريقة ذاتها التي يعمل بها عميل IRC مع isproxy 18:17 < jrand0m> تماماً 18:17 <@hezekiah> جيد. 18:17 <@hezekiah> أفهم الآن. :) 18:17 -!- moltar [~me@anon.iip] قد غادر #iip-dev [moltar] 18:17 <@nop> حسناً 18:17 <@nop> ليس تماماً 18:17 <@hezekiah> أوه لا. 18:17 <@nop> لكن تخيّل كيف يعمل ذلك 18:17 <@nop> وستفهم فكرة الـ sockets الاعتباطية 18:17 <@nop> isproxy يقوم فقط بالتوجيه 18:17 <@nop> والتسليم 18:18 <@nop> الآن يا jrand0m 18:18 <@nop> سؤال سريع 18:18 < jrand0m> نعم سيدي؟ 18:18 <@nop> هل صُمّمت هذه الـ API فقط للتطبيقات الجديدة المُصمَّمة للعمل على هذه الشبكة 18:18 -!- mode/#iip-dev [+v logger] by hezekiah 18:18 < WinBear> nop: مع أن المستوى العالي يحل محل عميل IRC؟ 18:18 < jrand0m> nop> نعم. رغم أن وكيل SOCKS5 يمكنه استخدام هذه الـ API أيضاً 18:18 <@nop> أم يمكن أن يكون هناك وسيط يسمح للعملاء القياسيين الحاليين 18:18 <@nop> مثلاً 18:19 <@nop> بحيث كل ما علينا هو كتابة الوسيط -> API 18:19 < jrand0m> (لكن لاحظ أنه لا توجد خدمة 'lookup' متاحة - لا يوجد DNS لهذه الشبكة) 18:19 < jrand0m> صحيح 18:19 <@nop> لكي ندعم مثلاً Mozilla إلخ 18:19 <@nop> بحيث يمكنهم فقط كتابة إضافات 18:19 < jrand0m> nop> نعم 18:19 <@nop> حسناً 18:19 <@nop> أو transports :) 18:20 < jrand0m> (مثلاً، لدى SOCKS5 وكلاء HTTP الخارجيون مُضمَّنون إلى destination1 وdestination2 وdestination3) 18:20 <@nop> حسناً 18:20 < WinBear> أظن أنني فهمت 18:21 < jrand0m> w00t 18:21 < jrand0m> حسناً، من الأمور التي كان علي التفكير فيها في هذا التصميم إبقاء المفاتيح الخاصة في مساحة ذاكرة التطبيق - الـ router لا يحصل مطلقاً على مفاتيح Destination الخاصة. 18:21 <@hezekiah> إذاً يمكن للتطبيق إرسال بيانات خام عبر شبكة I2P بإرسالها إلى الـ API، ولا يحتاج للقلق بشأن الباقي. 18:22 <@hezekiah> صحيح؟ 18:22 < jrand0m> هذا يعني أن على واجهات الـ API تنفيذ جزء التشفير من طرف إلى طرف 18:22 < jrand0m> تماماً يا hezekiah 18:22 <@hezekiah> حسناً. 18:22 <@nop> نعم 18:22 <@nop> هذه هي الفكرة 18:22 <@nop> هو يقوم بذلك نيابةً عنك 18:22 <@nop> أنت فقط تستدعي الـ hook 18:23 <@hezekiah> سؤال سريع: 18:23 <@hezekiah> هذا "router" يحتاج بوضوح إلى التحدّث ببروتوكول معيّن عبر الـ transports خاصته. 18:23 < jrand0m> صحيح 18:23 <@hezekiah> إذَنْ من الممكن توفير عدة تنفيذات للـ router ... 18:23 < jrand0m> نعم 18:24 <@hezekiah> ... طالما أنها جميعاً تتحدث البروتوكول نفسه. 18:24 < jrand0m> (ولهذا يحتوي الـ spec على أماكن محجوزة لـ bitbuckets) 18:24 < jrand0m> صحيح 18:24 <@hezekiah> إذ يمكنك أن تملك router بـ Java، وآخر بـ C، وآخر بـ PASCAL. 18:24 * jrand0m يقشعر 18:24 < jrand0m> لكن نعم 18:24 <@hezekiah> ويمكنها جميعاً التحدث معاً لأنها تتحدث عبر TCP/IP باستخدام البروتوكول نفسه. 18:24 * WinBear يقفز 18:24 <@hezekiah> jrand0m: ونعم. لا أذكر أيام PASCAL بحنين كبير أيضاً. 18:25 < jrand0m> حسناً، يمكن لـ Pascal أن يتحدث مع الذي بـ C عبر نقل TCP، ويمكن لـ C أن يتحدث مع الذي بـ Java عبر نقل HTTP، مثلاً 18:25 <@hezekiah> صحيح. 18:25 < jrand0m> (الـ transports تتخاطب مع الـ transports المماثلة، والـ routers تدير الرسائل المُسلَّمة بينها لكنها لا تتعامل مع كيفية تسليمها) 18:26 <@hezekiah> النقطة التي أردت توضيحها هي أن البروتوكول واحد، لذا لا يهم بأي لغة نُفّذ router شخص ما. 18:26 < jrand0m> صحيح 18:26 <@hezekiah> رائع. 18:26 < jrand0m> الآن تفهم لماذا قلت «ومن يهتم» لكل مناظرات C مقابل Java مقابل ...؟ :) 18:26 <@hezekiah> نعم. 18:26 <@hezekiah> لول 18:27 <@hezekiah> أحييك يا jrand0m. هذا سيجعل الأمر لطيفاً جداً للمطوّرين لكتابة برامج لهذه الشبكة. 18:27 < jrand0m> هه، حسناً، الـ API ليست فكرة أصلية تماماً. هكذا تعمل Message Oriented Middleware (MOM) 18:27 <@hezekiah> ويمكنك حتى صنع routers تتخصص بميزات خاصة بمنصات معيّنة (مثل معالجات 64-بت). 18:28 < jrand0m> بالتأكيد 18:28 <@hezekiah> jrand0m: ومتواضع أيضاً! ;-) 18:28 <@hezekiah> حسناً، يبدو جيداً لي. 18:28 < jrand0m> حسناً، UserX و nop، هل يبدو هذا الفصل منطقياً؟ 18:28 <@nop> بالطبع 18:28 <@nop> هل UserX ما زال هنا 18:29 <@hezekiah> كان خاملاً لمدة 1:26. 18:29 < jrand0m> 'حسناً'. إذن لدينا مهمتان: تصميم الشبكة، وتصميم كيفية عمل الـ API. 18:29 <@nop> صحيح 18:29 <@hezekiah> سؤال بسيط سريع: واجهات الـ API تقوم بتشفير من طرف إلى طرف. هل تقوم الـ routers بتشفير عقدة إلى عقدة؟ 18:29 <@nop> نعم 18:30 < jrand0m> نعم 18:30 < jrand0m> (على مستوى الـ transport) 18:30 <@hezekiah> جيد. :) 18:30 <@nop> hezekiah: هذا مشابه جداً لما لدينا حتى الآن 18:30 <@nop> من تلك الناحية 18:31 < jrand0m> حسناً.. آه، اللعنة، thecrypto غير موجود لإبداء التعليقات على نموذج الأداء. 18:31 < Neo> وللمهتمين بالخصوصية بشدة، يمكن للتطبيقات إجراء تشفير PGP قبل أن يصل إلى الـ API ;) 18:31 < jrand0m> بالتأكيد يا neo 18:31 < jrand0m> لقد راودتني فكرة ترك تشفير الطرف إلى الطرف خارج الـ API وتركه للتطبيقات... 18:31 <@hezekiah> jrand0m: ذلك سيكون قاسياً. 18:31 < jrand0m> هههه 18:32 <@hezekiah> بالمناسبة، واجهات الـ API والـ router تتواصل عبر sockets. 18:32 <@hezekiah> على UNIX هل ستستخدم sockets لـ UNIX أم مقابس TCP/IP محلية؟ 18:32 < jrand0m> على الأرجح TCP/IP محلياً فقط من باب البساطة 18:32 <@nop> انتظر 18:32 <@hezekiah> (أظن أنه يمكنك صنع router يقبل كليهما.) 18:33 * hezekiah يعجبه حقاً هذا الإعداد ذو الأجزاء القابلة للاستبدال 18:33 <@nop> إن انتظرت لحظة 18:34 <@hezekiah> أنتظر ... :) 18:34 <@nop> سأتصل بـ thecrypto في منزله 18:34 <@nop> لأرى إن كان يستطيع الدخول 18:34 < jrand0m> هه تمام 18:34 <@hezekiah> لول 18:34 * hezekiah يتخذ لهجة إيطالية سميكة 18:34 <@hezekiah> Nop لديه ... علاقات! 18:34 < jeremiah> أهلاً 18:34 <@nop> أهلاً jeremiah 18:35 < jrand0m> أهلاً jeremiah 18:35 <@nop> هل تود على مستوى الـ API المساعدة في واجهة Python API 18:35 < jeremiah> بالتأكيد 18:35 * jeremiah يقرأ السجل السابق 18:35 < jrand0m> هه تمام 18:35 * nop يتصل 18:36 <@nop> ليس في المنزل 18:36 <@nop> سيعود خلال ساعة 18:36 < jrand0m> 'حسناً، هل قرأ أحد غيري ملف .xls و/أو لديه تعليقات على النموذج؟ 18:37 <@hezekiah> قرأت ملف .xls ... لكنني لا أعرف الكثير عن p2p لذا كان معظمُه فوق مستواي. 18:37 <@hezekiah> UserX جيد في تلك الأمور. 18:37 <@nop> عليّ أن أقرأه بعدُ 18:37 < jrand0m> (بالمناسبة، كانت لدى morphmix أرقام مجنونة... كانوا يقولون إنهم يتوقعون أن تكون لدى مضيفين عشوائيين على الشبكة أزمنة ping متوسطة بين 20-150ms، بدلاً من 3-500 كما كنت أتوقع) 18:37 < jrand0m> جميل 18:37 <@nop> هل هو StarOffice أم OpenOffice؟ 18:37 < jrand0m> OpenOffice، لكني صدّرته إلى .xls 18:37 <@nop> وهو امتداد Excel؟ 18:37 < jrand0m> صحيح 18:38 <@hezekiah> بالمناسبة، بخصوص الـ API ... 18:38 < jrand0m> نعم سيدي؟ 18:38 <@hezekiah> ... في C سيكون النوع المنطقي boolean عبارة عن int. 18:38 <@nop> أي بريد إلكتروني 18:38 <@nop> hezekiah: نعم 18:38 <@hezekiah> سيتم إرسال الأصناف كمؤشرات إلى هياكل. 18:38 <@nop> إلا إذا عرّفت typedef لـ boolean 18:39 <@hezekiah> والدوال التي تستخدم byte[] ستستخدم void* مع معامل إضافي يحدد طول المخبأ (buffer). 18:39 <@nop> hezekiah: أنت تدقق كثيراً :) 18:39 < jrand0m> nop> لا أستطيع الوصول إلى الأرشيفات لذا لست متأكداً مما كان سطر الموضوع، لكنه كان الأسبوع الماضي... 18:39 <@nop> دعها لوقت لاحق 18:39 <@hezekiah> nop: أدقق؟ 18:39 < jrand0m> هه، نعم، أنتم الذين تعملون على واجهة C يمكنكم حل هذا التفصيل 18:39 * jeremiah أنهى قراءة السجل السابق 18:39 <@nop> ما اسم الملف 18:39 <@hezekiah> nop: أحاول فقط العثور على كل الأشياء المختلفة، لكي نحسمها كما طلب jrand0m. 18:40 <@hezekiah> أحاول أن أكون مفيداً. :) 18:40 <@nop> hezekiah: نعم، على الأرجح خارج وقت الاجتماع 18:40 < jrand0m> nop> simple_latency.xls 18:40 <@hezekiah> boolean sendMessage(Destination dest, byte[] payload); 18:40 <@hezekiah> would be 18:40 <@hezekiah> int sendMessage(Destination dest, void* payload, int length); 18:40 <@hezekiah> . 18:40 <@hezekiah> byte[] recieveMessage(int msgId); 18:40 <@hezekiah> that could either be: 18:41 <@hezekiah> void* recieveMessage(int msgId, int* length); 18:41 <@hezekiah> أو 18:41 <@nop> jrand0m: got it 18:41 <@hezekiah> void recieveMessage(int msgId, void* buf, int* length); 18:41 <@hezekiah> أو 18:41 < jrand0m> hezekia: why not typedef struct { int length; void* data; } Payload; 18:41 <@hezekiah> DataBlock* recieveMessage(int msgId)l 18:41 <@hezekiah> DataBlock* recieveMessage(int msgId); 18:41 < jeremiah> أين هذا الملف xls؟ 18:41 <@nop> أوه iip-dev 18:41 <@hezekiah> jrand0m: البنية التي ذكرتها هي أساساً ما عليه DataBlock. 18:42 < jrand0m> تمام يا hezekiah 18:42 <@nop> subject more models 18:42 <@hezekiah> على الأرجح نسخة C ستكون لديها DataBlocks. 18:43 <@hezekiah> علاوة على ذلك، الشيء الآخر الوحيد الجدير بالذكر هو أن كل 'interface' ستكون مجرد مجموعة دوال. 18:43 <@hezekiah> nop: هل وجدت كل الفروقات التي ستوجد في واجهة C API؟ 18:43 < jrand0m> صحيح. ربما #include "i2psession.h" أو شيء كهذا 18:43 < jeremiah> هل توجد نسخة أولية لواجهة Python API؟ 18:44 < jrand0m> لا يا jeremiah، لا أعرف Python حقاً :/ 18:44 <@nop> سأحتاج إلى إعادة مراجعة واجهة Java API، لكنني أقول إنك على المسار الصحيح 18:44 < jrand0m> لكنها ستكون على الأرجح مشابهة لـ Java، حيث إن Python OO 18:44 < jeremiah> رائع، يمكنني اشتقاق واحدة من واجهة C 18:44 * nop ليس خبير Java 18:44 < jrand0m> تمام jeremiah 18:44 < jeremiah> هل واجهة C API في الشيء الذي أرسلته قبل أيام؟ 18:44 <@hezekiah> نعم. ينبغي لـ Python أن تتعامل مع واجهة Java API. 18:44 < jrand0m> jeremiah> تلك كانت الخاصة بـ Java 18:45 < jrand0m> أوه، الخاصة بـ Java كانت اليوم 18:45 < jrand0m> والأقدم كانت مستقلة عن اللغة 18:45 <@hezekiah> هممم 18:45 <@nop> يقول UserX إنه يجب أن يكون قادراً على المساعدة في واجهة C API 18:45 < jrand0m> تمام 18:45 <@nop> هو مشغول في العمل حالياً 18:46 < jrand0m> جميل 18:46 <@hezekiah> ملاحظة أخيرة: مع واجهة C API، ربما تأخذ كل دالة structure* إلى البنية التي تُعدّ 'واجهة' لها في Java. 18:46 <@nop> hezekiah: يبدو جيداً 18:46 <@nop> يبدو جيداً 18:46 <@hezekiah> I2PSession createSession(String keyFileToLoadFrom, Properties options); 18:46 <@hezekiah> ستكون: 18:46 <@nop> جافا وأنواع بياناتها غير الأصلية 18:46 <@hezekiah> I2PSession* createSession(I2PClient* client, char* keyFileToLoadFrom, Properties* options); 18:46 <@nop> ;) 18:46 < jrand0m> ههه 18:46 < jrand0m> صحيح يا hezekiah 18:47 < jeremiah> هل نتعامل مع Unicode؟ 18:47 <@hezekiah> على أي حال، إن كنتم تستطيعون التعايش مع تلك الفروق، فينبغي أن تكون واجهات C وJava API متطابقة فيما عدا ذلك. 18:47 <@hezekiah> nop؟ Unicode؟ :) 18:47 < jrand0m> UTF8 إن لم يكن UTF16 18:48 <@hezekiah> ربما ينبغي التعامل مع Unicode على مستوى التطبيق. 18:48 < jrand0m> صحيح، مجموعة المحارف (charset) هي شأن محتوى الرسالة 18:48 <@hezekiah> أوه. 18:48 < jeremiah> حسناً 18:48 <@hezekiah> سلاسل Java تُدار بـ Unicode، أليس كذلك يا jrand0m؟ 18:48 < jrand0m> جميع الـ bitbuckets ستكون مُعرَّفة على مستوى البِت 18:48 < jrand0m> نعم يا hezekiah 18:48 < jrand0m> (إلا إذا طلبتَ منها صراحةً تغيير مجموعة المحارف) 18:49 <@hezekiah> إذن السلسلة المُرسلة إلى واجهة Java API ستكون مختلفة عن تلك المُرسلة إلى واجهة C API ما لم تنفّذ واجهة C API السلاسل باستخدام Unicode. 18:49 < jrand0m> غير ذي صلة 18:49 <@hezekiah> حسناً. 18:49 < jrand0m> (app->API != API->router. نحن نعرّف فقط API->router) 18:49 <@hezekiah> ما أقوله هو هذا يا jrand0m: 18:50 <@hezekiah> إذا ضبطتُ كلمة مروري عبر واجهة Java API، فإنها تذهب إلى الـ router ومنه إلى مكانٍ آخر. 18:50 < jrand0m> كلمة مرور؟ تقصد أنك تنشئ Destination؟ 18:50 <@hezekiah> ثم يجد router آخر، يرسله إلى واجهة API أخرى (؟) مُنفّذة بـ C. 18:50 <@hezekiah> void setPassphrase(String old, String new); 18:50 <@hezekiah> تلك الدالة. 18:51 < jrand0m> hezekiah> تلك كلمة المرور الإدارية للوصول إلى الأساليب الإدارية للـ router 18:51 <@hezekiah> آه 18:51 <@hezekiah> هل تنتهي أي دوال في الـ API تستخدم سلاسل Java بإرسال تلك السلسلة إلى واجهة API أخرى؟ 18:51 < jrand0m> 99.9% من التطبيقات ستستخدم I2PSession فقط، وليس I2PAdminSession 18:51 <@nop> أيضاً، أي شيء يحمله الـ router يتحوّل للسفر عبر الشبكة، صحيح؟ 18:51 <@hezekiah> إذاً ينبغي على الأرجح استخدام Unicode. 18:51 <@nop> Unicode لن يكون ذا صلة 18:52 < jrand0m> hezekiah> لا. كل المعلومات بين الـ routers ستُعرَّف عبر bit buckets 18:52 <@hezekiah> حسناً. 18:52 < jrand0m> صحيح nop، على مستوى الـ transport 18:52 <@hezekiah> (أفترض أن bit bucket مجرد مخبأ ثنائي، صحيح؟) 18:53 < jrand0m> bit bucket هو توصيف يُفيد بأن البِت الأول يعني X، والبِت الثاني يعني Y، والبِتّات 3-42 تعني Z، إلخ 18:53 < jrand0m> (مثلاً قد نرغب في استخدام X.509 لحيّز شهادات الـ bitbucket)
18:53 <@hezekiah> لم أتعامل مع ذلك من قبل.
18:54 <@hezekiah> سأهتم به عندما أصل إليه. :)
18:54 < jrand0m> هه، صحيح
18:55 < jrand0m> حسنًا، أربع أمور أردت أن نغطيها اليوم: *هيكلية router ، *نموذج الأداء، *تحليل الهجمات، *psyc. لقد أنجزنا الأول، thecrypto غير متصل لذا ربما نؤجل هذا (إلا إذا كانت لديك أفكار حول النموذج يا nop؟)
18:57 <@hezekiah> أمم … jrand0m. لدي سؤال آخر.
18:57 < jeremiah> jrand0m: أين أحدث نسخة من مواصفات الشبكة؟ هل هي ما أرسلته في الثالث عشر؟
18:57 < jrand0m> نعم يا سيدي؟
18:57 <@hezekiah> حسنًا، هيكلية router تجعل واجهة برمجة التطبيقات (API) تتعامل مع المفاتيح /المرسلة إليها من قِبل التطبيق/.
18:57 < jrand0m> jeremiah> نعم
18:57 <@nop> ليس لدي في الوقت الحالي
18:58 <@hezekiah> الآن … الطريقة الوحيدة التي أراها لحصول الـAPI على المفتاح هي عبر createSession.
18:58 < jrand0m> hezekiah> router يحصل على المفاتيح العامة والتواقيع، وليس المفاتيح الخاصة
18:58 < jrand0m> صحيح
18:58 <@hezekiah> لكن ذلك يتطلب ملفًا.
18:58 < jrand0m> تُخزَّن المفاتيح في ملف أو في ذاكرة الـAPI
18:58 < jrand0m> نعم
18:58 <@hezekiah> الآن، إذا أنشأ التطبيق مفتاحًا، فلماذا لا يمكنه ببساطة إرساله إلى الـAPI عبر مخزن مؤقت؟
18:59 <@hezekiah> هل يجب فعلًا تخزينه في ملف، ثم تزويد اسم الملف؟
18:59 < jrand0m> لا، يمكن أن يكون في الذاكرة إن أردت
18:59 <@hezekiah> لكن لا توجد دالة في الـAPI لكل ذلك.
18:59 <@hezekiah> مجرد فكرة.
19:00 <@hezekiah> إذا كان من المفترض إنشاء المفتاح مرة واحدة فقط واستخدامه مرات كثيرة جدًا (مثل مفاتيح GPG)، فإن الملف يكون منطقيًا.
19:00 -!- mihi [none@anon.iip] قد غادر [وداعًا جميعًا، لقد تأخر الوقت…]
19:00 <@hezekiah> لكن إن كان سيُولَّد بشكل متكرر أكثر، فربما تكون هناك طريقة لإرساله مباشرةً إلى الـAPI عبر بنية أو مخزن مؤقت من نوعٍ ما ستكون لطيفة
19:00 <@hezekiah> .
19:01 < jrand0m> نعم، يُولَّد مرة واحدة وفقط مرة واحدة (إلا إذا كنت ترتدي قبعة من ورق الألومنيوم)
19:02 < jrand0m> مع ذلك فإن createDestination(keyFileToSaveTo) تتيح لك إنشاء ذلك المفتاح
19:02 <@hezekiah> حسنًا.
19:02 <@hezekiah> لا حاجة فعلية للنقل مباشرةً من التطبيق إلى الـAPI. يكفي استخدام ملف.
19:03 <@hezekiah> إذًا أين كنا قبل أن أقاطعكم بهذه الوقاحة؟ :)
19:06 < jeremiah> إذًا نحن الآن نعمل فقط على واجهة برمجة تطبيقات router، وليس الخاصة بالعميل، صحيح؟
19:06 < jrand0m> حسنًا، سنتجاوز تحليل الأداء الآن (نأمل أن نحصل على بعض النقاش حوله في قائمة البريد قبل الأسبوع القادم؟). وعلى الأرجح الأمر نفسه بخصوص تحليل الهجمات (ما لم يكن أحد قرأ المواصفات الجديدة ولديه تعليقات)
19:07 <@hezekiah> طالما أننا نتجاوز ذلك، فما الذي يفترض بنا أن نتحدث عنه الآن؟
19:07 <@hezekiah> psyc؟
19:07 < jrand0m> إلا إذا كان لدى أي شخص آخر تعليقات ليطرحها…؟
19:08 <@hezekiah> حسنًا، للمرة الأولى، حفرة التعليقات لدي (المعروفة سيئًا باسم فمي) فارغة.
19:08 < jrand0m> ههه
19:09 < jrand0m> حسنًا، هل لدى أحد أفكار حول كيف سيعمل جانب IRC من الأمور، وما إذا كان psyc قد يكون ذا صلة أو مفيدًا؟
19:09 < jeremiah> ملاحظة جانبية (أغضبتني): قائمة wired بعنوان “Wired, Tired, Expired” وضعت Waste ضمن “wired”
19:09 < jrand0m> هه
19:09 < jrand0m> هل تدرك كم سنُذهل الجميع؟
19:09 < jeremiah> نعم
19:09 <@hezekiah> jrand0m: هذا يفترض أننا سنجعل هذا يعمل.
19:10 < jrand0m> أضمن أنه سيعمل.
19:10 <@hezekiah> هناك الكثير من المحاولات الفاشلة هناك.
19:10 < jrand0m> تركت عملي لأعمل على هذا.
19:10 <@hezekiah> إذًا سنُذهل الجميع. :)
19:10 <@hezekiah> نعم. كيف ستؤمّن لقمة العيش عندما تفعل ذلك؟
19:10 <@hezekiah> شيفرة GPL لا تدفع جيدًا. ;-)
19:10 < jrand0m> هه
19:11 <@hezekiah> أما بالنسبة إلى psyc … دعني أقولها بهذه الطريقة:
19:11 <@hezekiah> أول مرة سمعت عنه كانت عندما أرسلتَ لنا بريدًا بشأنه.
19:11 < jrand0m> اللعنة، لم أكن أنا من وجده :)
19:11 <@hezekiah> مع ذلك، IRC على الأرجح واحد من أكثر بروتوكولات الدردشة انتشارًا (إن لم يكن /الأكثر/).
19:11 <@hezekiah> سيريد الناس تطبيقات IRC بفترة طويلة قبل أن /يعرفوا/ حتى ما هو psyc.
19:11 <@hezekiah> jrand0m: أوبس. آسف. نسيت ذلك التفصيل. :)
19:12 < jrand0m> ليس وفقًا لـpsyc. تاريخهم يعود إلى 86 على ما أظن
19:12 <@hezekiah> الفكرة هي أن تفوّق البروتوكول ليس مهمًا بقدر من يستخدمه.
19:12 <@hezekiah> قد يعود تاريخهم إلى ذلك الوقت.
19:12 <@hezekiah> لكن كم عدد الأشخاص الذين يستخدمون psyc؟
19:12 < jeremiah> نعم، إذا كانوا موجودين منذ سنة بعد ولادتي (إحم) وما زالوا غير كبار إلى هذا الحد
19:12 <@hezekiah> قصدي أنه حتى لو كان بروتوكولًا أفضل، فإن معظم الناس يستخدمون IRC.
19:13 <@hezekiah> يمكننا أن نصنع أفضل شبكة I2P على الكوكب …
19:13 -!- Ehud [logger@anon.iip] قد غادر [Ping timeout]
19:14 < jeremiah> هل يمكن لأحد أن يشرح باختصار لماذا نهتم؟ ظننتُ أن IRC سيكون مجرد تطبيق ممكن واحد، لكن الشبكة مرنة لدعم psyc أيضًا إذا أرادت
19:14 <@hezekiah> صحيح.
19:14 <@hezekiah> يمكن تنفيذ psyc …
19:14 <@hezekiah> … لكنني أقول إن علينا أن نبدأ بـIRC أولًا لأن مزيدًا من الناس يستخدمونه.
19:14 <@hezekiah> jrand0m, we can make a great I2P network, but people won’t use it unless it has something they want. 19:14 < jrand0m> jeremiah> the reason psyc is interesting is that we may want to implement IRC in the same vein that psyc works 19:15 <@hezekiah> Hence we should provide them with a ‘killer-app’. 19:15 < jeremiah> ok 19:15 < jrand0m> right, IIP is invisible IRC project, and will allow people to run IRC 19:16 < jrand0m> with no central server (or any server at all, actually), theres a lot of thinking to be done to figure out how IRC will work. psyc has a possible answer to that 19:16 < jrand0m> though there are others 19:17 <@hezekiah> As I said, psyc might do better, but people want to use IRC, not psyc. 19:17 < jrand0m> and they will 19:17 < jrand0m> they’ll use irc 19:17 <@hezekiah> It’s all about marketing, baby! ;-) 19:17 < jeremiah> I’ll try to read the spec and some stuff on psyc tonight 19:17 < jrand0m> word 19:17 <@hezekiah> lol 19:17 < jeremiah> planning to meet at 5:00 UTC tommorow? 19:17 <@hezekiah> No? 19:18 < jeremiah> or whenever 19:18 < jrand0m> I’m on iip 24x7 :) 19:18 < jeremiah> yeah but i eat 19:18 <@hezekiah> jrand0m: I noticed. 19:18 < jrand0m> 05:00 utc or 17:00 utc? 19:18 <@hezekiah> jeremiah: LOL! 19:18 <@hezekiah> Well the iip-dev meeting officially starts at 21:00 UTC. 19:18 -!- Ehud [~logger@anon.iip] has joined #iip-dev 19:19 < jeremiah> ok, i just said 05:00 UTC because I was talking out of my ass 19:19 < jeremiah> where’s mids? 19:19 <@hezekiah> mids, left the project for a while. 19:19 <@hezekiah> Weren’t you there a few meetings back? 19:19 < jeremiah> ok 19:19 < jeremiah> guess not 19:19 <@hezekiah> We had a goodbye party of sorts as part of the agenda. 19:19 < jeremiah> oh 19:20 <@hezekiah> OK … 19:20 <@hezekiah> Is there anything still on the agenda? 19:20 * jrand0m doesn’t have any left on mine 19:20 < jeremiah> about psyc: 19:20 < jeremiah> if this is a psyc feature, I know you mentioned it a while ago 19:20 * hezekiah never had an agenda in the first placve 19:21 <@hezekiah> pace 19:21 <@hezekiah> place 19:21 < jeremiah> I don’t think having each user send a message to every other use in the room is s smart idea 19:21 <@hezekiah> There! 19:21 < jrand0m> jeremiah> so you’d have redundant nominated pseudoservers redistribute the messages? 19:21 < jrand0m> (pseudoservers = peers in the channel who have the list of users) 19:21 < jeremiah> I don’t think ‘broadcasting’ is that smart either, but it
يبدو أنه سيتطلب مقدارًا كبيرًا من عرض النطاق لمستخدم معيّن قد يكون على مودِم، ومع التأخير الناتج عن إرسال… لنقل 20 رسالة بشكل منفصل، سيؤدي ذلك إلى إفساد المحادثة
19:21 < jeremiah> لا أعرف أفضل حل، ربما يكون ذلك أحدها
19:22 < jeremiah> أظن أن الرسائل المباشرة ستكون جيدة إن أردتها، لكن هناك حالات ربما لا تكون فيها بتلك الأهمية
19:22 <@hezekiah> يجب توقيع الرسالة بالمفتاح الخاص بالمؤلف لضمان الأصالة.
19:22 <@hezekiah> مع أن هذه المسألة لن تهمّ لفترة طويلة بعد، أعتقد أن jeremiah معه حق
19:22 < jrand0m> hezekiah> ذلك يتطلب مستخدمين يريدون تواصلًا قابلًا للإثبات :)
19:23 < jrand0m> بالتأكيد.
19:23 <@hezekiah> إن كان عليّ إرسال رسالة إلى 100 مستخدم في قناة …
19:23 < jeremiah> مع أن متوسط رسائلي لا يتجاوز بضع مئات من البايتات، فإرسالها إلى مئات المستخدمين قد لا يكون صعبًا جدًا
19:23 <@hezekiah> … حسنًا، ستكون محادثتي /بطيئة جدًا/.
19:23 < jeremiah> خصوصًا إذا لم تنتظر ردًا
19:23 <@hezekiah> 20K لإرسال رسالة واحدة.
19:23 <@hezekiah> لا أظن ذلك. :)
19:23 < jrand0m> حسنًا، إذا كان هناك 100 مستخدم في قناة، فعلى أحدهم إرسال 100 رسالة
19:23 < jeremiah> هل هي 20K؟
19:23 < jeremiah> آه، صحيح
19:23 <@hezekiah> 200 مستخدم
19:24 < jeremiah> هممم
19:24 < jeremiah> ألن تكون routers جيدة في ذلك؟
19:24 < jeremiah> يمكننا باطمئنان إلى حدّ ما افتراض أنّ لديهم عرض نطاق مناسبًا، أليس كذلك؟
19:24 <@hezekiah> كنت أظن أن لكل شخص ‘router implementation’
19:24 < jrand0m> ليس بالضبط. إذا وُجدت مرحلات، فعلى آلية الترشيح أخذ ذلك بالاعتبار
19:24 < jrand0m> نعم يا hezekiah
19:24 < jeremiah> لم أقرأ المواصفة
19:25 < jrand0m> الـ router هو الـ router المحلي لديك
19:25 <@hezekiah> آخ!
19:25 <@hezekiah> ما زلت أخلط ألقابكما!
19:25 <@hezekiah> lol
19:25 < jrand0m> hehe
19:25 <@hezekiah> أمم … إلى أين ذهب nop؟
19:25 <@hezekiah> أوه.
19:26 <@hezekiah> ما زال هنا.
19:26 <@hezekiah> ظننتُ أنه رحل لبرهة،
19:26 < jrand0m> لكن jeremiah محق، لدى psyc بعض الأفكار التي قد نرغب في أخذها بالاعتبار، رغم أننا قد نرغب في رفضها
19:26 <@hezekiah> دعونا أولًا نجعل الشبكة تعمل.
19:26 * jrand0m يشرب نخب ذلك
19:26 <@hezekiah> إذا مددّت رؤيتك نحو خط النهاية، ستتعثر بالصخرة التي تبعد 3 بوصات أمامك.
19:27 * jeremiah يشعر بالإلهام
19:27 <@hezekiah> lol
19:27 < jrand0m> أعتقد أنه سيكون رائعًا جدًا لو استهدفنا مراجعة مواصفة الشبكة بحلول الأسبوع المقبل، مع إرسال رسائل إلى iip-dev كلما كان لدى أيٍّ منا أفكار أو تعليقات. هل فقدت صوابي؟
19:27 <@hezekiah> nop؟ هل لديك أي شيء آخر تضيفه إلى جدول الأعمال، أم نرفع الجلسة؟
19:27 <@hezekiah> jrand0m: حسنًا، لا أعلم إن كان بإمكاني قراءة كل ذلك بحلول الأسبوع المقبل، لكن يمكنني المحاولة. :)
19:27 < jrand0m> heh
19:28 < jrand0m> إنها 15 صفحة مجهدة ;)
19:28 <@hezekiah> 15 صفحة؟
19:28 <@hezekiah> بدت أقرب إلى 120!
19:29 < jrand0m> هه، حسنًا، يعتمد ذلك على دقّة شاشتك فيما أظن ;)
19:29 < jeremiah> لديه الكثير من المراسي (anchors) هناك، ما يجعله يبدو ضخمًا
19:29 < jrand0m> hehe
19:29 <@hezekiah> الجانب الأيسر يحتوي على عدد كبير يفوق 15 رابطًا، يا صاح!
19:29 <@hezekiah> ‘اعترف!
19:29 <@hezekiah> إنها أكثر من 15. :)
19:29 <@hezekiah> أوه!
19:29 <@hezekiah> تلك ليست صفحات! إنها مجرد مراسي!
19:29 <@hezekiah> لقد نجوت!
19:30 * hezekiah يشعر كبحّار تم إنقاذه للتو من الغرق
19:30 < jeremiah> يا صفّ، انتقلوا إلى المجلد 4، الفصل 2: بنية بايت الرسالة
19:30 < jrand0m> lol
19:30 <@hezekiah> lol
19:30 <@nop> نرفع الجلسة
19:30 <@hezekiah> باف!
19:30 <@hezekiah> الأسبوع القادم، 21:00 بالتوقيت العالمي UTC، نفس المكان.
19:30 <@hezekiah> أراكم جميعًا هناك. :)
19:30 < jeremiah> أراكم — تم إغلاق السجل Tue Jul 15 19:30:51 2003