File: index.html

package info (click to toggle)
okasha 0.3.0-2
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid, trixie
  • size: 784 kB
  • sloc: python: 1,024; sh: 30; makefile: 7; javascript: 2
file content (254 lines) | stat: -rw-r--r-- 18,380 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ar"
 lang="ar" dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وثائق عكاشة</title>
<link rel="stylesheet" media="all" type="text/css" href="all.css" />
<link rel="stylesheet" media="screen" type="text/css" href="screen.css" />
<link rel="stylesheet" media="print" type="text/css" href="print.css" />
</head>
<body>
<div class="dokuwiki export">
<!-- TOC START -->
<div class="toc">
<div class="tocheader toctoggle" id="toc__header">جدول المحتويات</div>
<div id="toc__inside">

<ul class="toc">
<li class="level1"><div class="li"><span class="li"><a href="#إطار_الويب_عكاشة" class="toc">إطار الويب عكاشة</a></span></div>
<ul class="toc">
<li class="level2"><div class="li"><span class="li"><a href="#تمهيد" class="toc">تمهيد</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#الوثائق" class="toc">الوثائق</a></span></div></li>
<li class="level2"><div class="li"><span class="li"><a href="#الأسئلة_الشائعة" class="toc">الأسئلة الشائعة</a></span></div>
<ul class="toc">
<li class="level3"><div class="li"><span class="li"><a href="#ما_هو_عكاشة" class="toc">ما هو عكاشة ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#من_هو_عكاشة" class="toc">من هو عكاشة ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#ما_معنى_الكلمة" class="toc">ما معنى الكلمة ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#من_أين_أحصل_عليه" class="toc">من أين أحصل عليه ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#لماذا_لم_يكتب_على_php_كبقية_التطبيقات_في_العالم" class="toc">لماذا لم يكتب على php كبقية التطبيقات في العالم ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#هل_هو_وفق_ب_نية_mvc" class="toc">هل هو وفق بُنية MVC ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#هل_يدفع_أم_يسحب" class="toc">هل يدفع أم يسحب ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#أين_تضعه_مقارنة_بالأطر_البايثونية_الأخرى" class="toc">أين تضعه مقارنة بالأطر البايثونية الأخرى ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#كيف_يمكنني_اختبار_برنامجي" class="toc">كيف يمكنني اختبار برنامجي ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#أين_أجد_هكذا_خادم_ضمني" class="toc">أين أجد هكذا خادم ضمني ؟</a></span></div></li>
<li class="level3"><div class="li"><span class="li"><a href="#كيف_يمكنني_نشر_تطبيق_الويب_وأي_الاستضافات_تدعمه" class="toc">كيف يمكنني نشر تطبيق الويب ؟ وأي الاستضافات تدعمه ؟</a></span></div></li>
</ul>
</li>
</ul>
</li>
</div>
</div>
<!-- TOC END -->

<h1 class="sectionedit1"><a name="إطار_الويب_عكاشة" id="إطار_الويب_عكاشة">إطار الويب عكاشة</a></h1>
<div class="level1">

</div>
<!-- EDIT1 SECTION "إطار الويب عكاشة" [1-46] -->
<h2 class="sectionedit2"><a name="تمهيد" id="تمهيد">تمهيد</a></h2>
<div class="level2">

<p>
<a href="../files/logo.png" class="media" title="okasha:logo.png"><img src="../files/logo.png" class="medialeft" align="left" title="إطار الويب عكاشة" alt="إطار الويب عكاشة" width="128" /></a>
إنّ مواقع الإنترنت الناجحة ليست مجرّد صفحات <acronym title="HyperText Markup Language">HTML</acronym> ساكنة بل إنّ أغلبها تحتوي على محتويات تفاعلية (تستخدم حسابات أو قواعد بيانات وتتفاعل مع المستخدمين وتسمح لهم بالتعليق والتواصل معاً)، يتم توليد المحتويات عبر لغات برمجة تنفّذ على الخادم.
</p>

<p>
إنّ تطوير تطبيقات الويب يحتوي على الكثير من الأمور الرتيبة المملّة، ومن هنا ظهرت الحاجة لأطر الويب web frameworks
</p>

<p>
تمّ تطوير إطار الويب عكاشة أساساً من أجل عمل تطبيق الويب في <a href="/wiki/thawab/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%A3%D9%88%D9%84%D9%89" class="wikilink1" title="thawab:الصفحة_الأولى">مشروع ثواب</a> ثم رأيت فصله حتى يمكن الاستفادة منه في عمل تطبيقات أخرى حيث أنه كود عام يصلح لأي تطبيق ويب.
</p>

</div>
<!-- EDIT2 SECTION "تمهيد" [47-1064] -->
<h2 class="sectionedit3"><a name="الوثائق" id="الوثائق">الوثائق</a></h2>
<div class="level2">

<p>
إن أفضل وثيقة لفهم عكاشة هي بالنظر إلى الكود وإلى مثال test.py لكن هذا لا يعني أنه لا يوجد وثائق.
يمكنك أن تبدأ بقراءة
</p>
<ul>
<li class="level1"><div class="li"> <a href="sample1.html" class="wikilink1" title="okasha:sample1">مثال أولي بسيط</a></div>
</li>
<li class="level1"><div class="li"> <a href="deployment.html" class="wikilink1" title="okasha:deployment">طرق النشر</a></div>
</li>
<li class="level1"><div class="li"> <a href="templates.html" class="wikilink1" title="okasha:templates">القوالب</a></div>
</li>
<li class="level1"><div class="li"> <a href="elixir.html" class="wikilink1" title="okasha:elixir">قواعد البيانات عبر الإكسير</a></div>
</li>
</ul>

</div>
<!-- EDIT3 SECTION "الوثائق" [1065-1366] -->
<h2 class="sectionedit4"><a name="الأسئلة_الشائعة" id="الأسئلة_الشائعة">الأسئلة الشائعة</a></h2>
<div class="level2">

</div>
<!-- EDIT4 SECTION "الأسئلة الشائعة" [1367-1408] -->
<h3 class="sectionedit5"><a name="ما_هو_عكاشة" id="ما_هو_عكاشة">ما هو عكاشة ؟</a></h3>
<div class="level3">

<p>
هو إطار ويب لعمل تطبيقات ويب متطوّرة بلغة البرمجة بايثون متوافقة مع مبدأ ويز-جي WSGI بكل بساطة وسهولة.

</p>

</div>
<!-- EDIT5 SECTION "ما هو عكاشة ؟" [1409-1624] -->
<h3 class="sectionedit6"><a name="من_هو_عكاشة" id="من_هو_عكاشة">من هو عكاشة ؟</a></h3>
<div class="level3">

<p>
هو الصحابي الجليل عكاشة بن محصن<sup><a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top">1)</a></sup> رضي الله عنه وهو ممّن  يدخلون الجنّة بلا حساب ولا عذاب. قال عنه ابن حجر في الإصابة: من السابقين الأوّلين وشهد بدراً، وقع ذكره في الصحيحين في حديث ابن عباس في السبعين ألفاً الذين يدخلون الجنة بغير حساب، فقال عكاشة: ادع الله أن يجعلني منهم. قال: “أنت منهم”. فقام آخر فقال: “سبقك بها عكاشة”. قيل: استشهد عكاشة في قتال أهل الرّدة.
</p>

</div>
<!-- EDIT6 SECTION "من هو عكاشة ؟" [1625-2438] -->
<h3 class="sectionedit7"><a name="ما_معنى_الكلمة" id="ما_معنى_الكلمة">ما معنى الكلمة ؟</a></h3>
<div class="level3">

<p>
في القاموس المحيط نجد أنها العَنْكَبوتُ، أو ذُكُورها، أو بَيْتُها (…) عُكاشَةُ الغَنَوِيُّ، وابنُ ثَوْرٍ، وابنُ مِحْصَنٍ، الصحابِيُّونَ. 
</p>

<p>
ذكر ابن منظور في لسان العرب تحت جذر عكش: عكَشَ عليه: حَمَلَ. وعَكِش النباتُ والشعرُ وتعَكَّش: كَثُرَ والتفَّ. وكلُّ شيءٍ لزم بعضُه بعضاً فقد تَعَكَّشَ. وشعرٌ عَكِشٌ ومُتَعَكِّشُ إِذا تلبَّد. وشعر عَكِشُ الأَطراف إِذا كان جَعْداً (…) وشجرة عَكِشَةٌ: كثيرةُ الفروع مُتَشَجِّنةٌ. والعُكَاشة والعُكَّاشةُ: <strong>العنكبوت</strong>: وبها سمي الرجل. (…) وعُكَيْشٌ وعُكَّاشةُ وعَكَّاشٌ: أَسماء. (…) وعُكَّاشة بن مِحْصن الأَسدي: من الصحابة، وقد يخفّف.
</p>

<p>
الشكر لأخي طه الزروقي الذي اختار الاسم.
</p>

</div>
<!-- EDIT7 SECTION "ما معنى الكلمة ؟" [2439-3587] -->
<h3 class="sectionedit8"><a name="من_أين_أحصل_عليه" id="من_أين_أحصل_عليه">من أين أحصل عليه ؟</a></h3>
<div class="level3">

<p>
كود عكاشة متوفّر من خلال <a target="_blank" href="http://git.ojuba.org/cgit/okasha/about/" class="urlextern" title="http://git.ojuba.org/cgit/okasha/about/"  rel="nofollow">بوتقة أعجوبة</a>
</p>

<p>
للحصول على آخر إصدار اتبع <a target="_blank" href="http://git.ojuba.org/cgit/okasha/snapshot/okasha-master.tar.bz2" class="urlextern" title="http://git.ojuba.org/cgit/okasha/snapshot/okasha-master.tar.bz2"  rel="nofollow">الرابط التالي</a>
</p>

</div>
<!-- EDIT8 SECTION "من أين أحصل عليه ؟" [3588-3886] -->
<h3 class="sectionedit9"><a name="لماذا_لم_يكتب_على_php_كبقية_التطبيقات_في_العالم" id="لماذا_لم_يكتب_على_php_كبقية_التطبيقات_في_العالم">لماذا لم يكتب على php كبقية التطبيقات في العالم ؟</a></h3>
<div class="level3">

<p>
لغة php ليست لغة نظيفة خصوصا في ما يتعلق بدعم utf-8
</p>

</div>
<!-- EDIT9 SECTION "لماذا لم يكتب على php كبقية التطبيقات في العالم ؟" [3887-4069] -->
<h3 class="sectionedit10"><a name="هل_هو_وفق_ب_نية_mvc" id="هل_هو_وفق_ب_نية_mvc">هل هو وفق بُنية MVC ؟</a></h3>
<div class="level3">

<p>
نعم تستطيع أن تقول ذلك. إذ يشكّل الصنف baseWebApp المتحكّم Controller ويترك لك الإطار اختيار أي كائن بايثوني ليكون النموذج Model (الذي قد يكون مصدره من قاعدة بيانات عبر elixir) وتحدّد أي نظام قوالب تريد ليكون عنصر العرض.
</p>

</div>
<!-- EDIT10 SECTION "هل هو وفق بُنية MVC ؟" [4070-4484] -->
<h3 class="sectionedit11"><a name="هل_يدفع_أم_يسحب" id="هل_يدفع_أم_يسحب">هل يدفع أم يسحب ؟</a></h3>
<div class="level3">

<p>
أطر الويب نوعان <a target="_blank" href="http://en.wikipedia.org/wiki/Web_application_framework#Push-based_vs._Pull-based" class="urlextern" title="http://en.wikipedia.org/wiki/Web_application_framework#Push-based_vs._Pull-based"  rel="nofollow">push-based و pull-based</a>. الأول تقوم بالمعالجة ثم يدفع بالنتائج والثاني يقوم بعرض صفحة من القالب ثم يسحب النتائج إليها عبر مصادر متعدّدة.
</p>

<p>
يمكن تطبيق النمطين في حالة عكاشة. يمكنك أن تدفع بالقيم إلى قالب ليتم عرضها، كما ويمكنك البدء بصفحة هيكلية ثم سحب عدة مكونات فيها عبر ajax مثلا باستخدام قالب jsonDumps.
</p>

</div>
<!-- EDIT11 SECTION "هل يدفع أم يسحب ؟" [4485-5163] -->
<h3 class="sectionedit12"><a name="أين_تضعه_مقارنة_بالأطر_البايثونية_الأخرى" id="أين_تضعه_مقارنة_بالأطر_البايثونية_الأخرى">أين تضعه مقارنة بالأطر البايثونية الأخرى ؟</a></h3>
<div class="level3">

<p>
يمتاز عكاشة عن كل أطر الويب التي اختبرتها بالبساطة لهذا أُعرّفه إطار الويب البدهي trivial web framework أو إطار الويب الذي لا يقوم بشيء do nothing web framework بمعنى أنه لا يقف في طريقك ولن يكون صعبا عليك أن تدرك كل ما يحيط به في ذاكرتك دون الرجوع للوثائق.
</p>

<p>
عكاشة أقرب ما يكون إلى <a target="_blank" href="http://www.cherrypy.org/" class="urlextern" title="http://www.cherrypy.org/"  rel="nofollow">cherrypy</a>
وأبعد ما يكون عن <a target="_blank" href="http://www.djangoproject.com/" class="urlextern" title="http://www.djangoproject.com/"  rel="nofollow">django</a>
</p>

<p>
الكثير من أطر الويب تحدّد لك نموذج البيانات ومحرّك القوالب وغير ذلك من العوامل، كذلك فإنّها غالبا تتطلّب عمل شجرة معقّدة من الملفات والإعدادات، بل إنّها في الغالب تأتي مع برنامج يعمل تلك الشجرة لتشابكها فيقوم البرنامج بعمل الكثير من الملفات التي قد لا تتمكن من هضمها كلها.
</p>

<p>
في Pylon يتم تعريف طريقة التعامل مع <acronym title="Uniform Resource Locator">URL</acronym> من خلال مكتبة 
<a target="_blank" href="http://routes.groovie.org/" class="urlextern" title="http://routes.groovie.org/"  rel="nofollow">routes</a> الذي بدوره يحاكي RoR حيث تربط أنت نمط من العناوين مع دالة معينة. في حين أن طريقة الربط محدّد مسبقا في عكاشة بحيث تمنعك من “إطلاق النار على نفسك!”
</p>

<p>
باختصار إن إطار عكاشة هو تطبيق لمبدأ بايثوني معروف وهو أن الصريح أفضل من الضمني والبسيط أفضل من المعقد.
</p>

</div>
<!-- EDIT12 SECTION "أين تضعه مقارنة بالأطر البايثونية الأخرى ؟" [5164-6903] -->
<h3 class="sectionedit13"><a name="كيف_يمكنني_اختبار_برنامجي" id="كيف_يمكنني_اختبار_برنامجي">كيف يمكنني اختبار برنامجي ؟</a></h3>
<div class="level3">

<p>
يمكنك إطلاق خادم ضمني صغير يقوم بتشغيل تطبيق الويب دون الحاجة لخادم apache.
</p>

</div>
<!-- EDIT13 SECTION "كيف يمكنني اختبار برنامجي ؟" [6904-7097] -->
<h3 class="sectionedit14"><a name="أين_أجد_هكذا_خادم_ضمني" id="أين_أجد_هكذا_خادم_ضمني">أين أجد هكذا خادم ضمني ؟</a></h3>
<div class="level3">

<p>
بما أنه مطابق لمعايير WSGI يمكنك استخدام أي خادم ضمني يدعمها. أفضل مثال على ذلك هو عبر مكتبة python-paste
وهي مكتبة بايثونية صرفة لا يزيد حجمها عن واحد ونصف ميغابايت. وهي تعمل على كل الأنظمة بما فيها ويندوز.
</p>

</div>
<!-- EDIT14 SECTION "أين أجد هكذا خادم ضمني ؟" [7098-7511] -->
<h3 class="sectionedit15"><a name="كيف_يمكنني_نشر_تطبيق_الويب_وأي_الاستضافات_تدعمه" id="كيف_يمكنني_نشر_تطبيق_الويب_وأي_الاستضافات_تدعمه">كيف يمكنني نشر تطبيق الويب ؟ وأي الاستضافات تدعمه ؟</a></h3>
<div class="level3">

<p>
إن هناك عشرات الطرق لإطلاق تطبيقات عكاشة شأنه في ذلك شأن تطبيقات WSGI حيث أنها معايير كتابة تطبيقات الويب في بايثون. ومن هذه الطرق

</p>
<ul>
<li class="level1"><div class="li"> عبر <a target="_blank" href="http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side" class="urlextern" title="http://www.python.org/dev/peps/pep-0333/#the-server-gateway-side"  rel="nofollow">برنامج wrapper صغير</a> يجعلها تعمل كتطبيق <acronym title="Common Gateway Interface">CGI</acronym> على أي خادم يدعم <acronym title="Common Gateway Interface">CGI</acronym> أو FastCGI أو ما شابه</div>
</li>
<li class="level1"><div class="li"> عبر <a target="_blank" href="http://code.google.com/appengine/docs/python/tools/webapp/utilmodule.html#run_wsgi_app" class="urlextern" title="http://code.google.com/appengine/docs/python/tools/webapp/utilmodule.html#run_wsgi_app"  rel="nofollow">google app engine</a></div>
</li>
<li class="level1"><div class="li"> عبر mod_wsgi في خادم apache</div>
</li>
<li class="level1"><div class="li"> عبر mod_python في خادم apache (لكنه يحتاج wrapper ولا ننصح بها)</div>
</li>
<li class="level1"><div class="li"> عبر خوادم ضمنية منضددة مثل python-paste</div>
</li>
<li class="level1"><div class="li"> عبر تشغيل الخادم الضمني ثم عمل وكيل له proxy من خلال <a target="_blank" href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html" class="urlextern" title="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html"  rel="nofollow">mod_proxy</a> من داخل apache </div>
</li>
</ul>

<p>

للمزيد انظر صفحة <a href="deployment.html" class="wikilink1" title="okasha:deployment">طرق النشر</a>

</p>

</div>
<!-- EDIT15 SECTION "كيف يمكنني نشر تطبيق الويب ؟ وأي الاستضافات تدعمه ؟" [7512-] --><div class="footnotes">
<div class="fn"><sup><a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot">1)</a></sup> 
هو عكاشة بن محصن بن حرثان بن قيس بن مرة بن كبير بن غنم بن دودان بن أسد بن خزيمة</div>
</div>
</div>
</body>
</html>