fix: converted single to triple backticks7 (#36234)

This commit is contained in:
Randell Dawson
2019-06-20 14:45:11 -07:00
committed by Tom
parent 19a601f135
commit ab2523953b
75 changed files with 1397 additions and 1177 deletions

View File

@ -12,12 +12,13 @@ localeTitle: فليكس الملكية
الاختلافات الممكنة في بناء الجملة المذكورة أدناه. `flex-grow` `flex-shrink` يأخذ عدد صحيح كقيمة. `flex-basis` يأخذ وحدات حجم منتظم مثل px ، em ، rem… الخ.
`flex: <flex-grow> <flex-shrink> <flex-basis>;
flex: <flex-basis>;
flex: <flex-grow>;
flex: <flex-grow> <flex-basis>;
flex: <flex-grow> <flex-shrink>;
`
```css
flex: <flex-grow> <flex-shrink> <flex-basis>;
flex: <flex-basis>;
flex: <flex-grow>;
flex: <flex-grow> <flex-basis>;
flex: <flex-grow> <flex-shrink>;
```
تحدد `flex-basis` حجم العنصر على طول المحور الرئيسي. داخل الحاوية ، يتم تعريف المحور الرئيسي `flex-direction` . المحور الرئيسي هو الأفقي عندما يكون `flex-direction` هو `row` . عمودي عندما يكون `flex-direction` هو `column` .

View File

@ -6,14 +6,15 @@ localeTitle: تعويم الملكية
تسمح الخاصية `float` لعنصر يطفو إلى يمين أو يمين عنصر آخر. الاستخدام الأساسي `float` هو الحصول على صورة على يسار أو يمين كتلة النص.
`.my-element {
float: left;
float: right;
float: inline-start;
float: inline-end;
float: none;
}
`
```css
.my-element {
float: left;
float: right;
float: inline-start;
float: inline-end;
float: none;
}
```
#### معلومات اكثر:

View File

@ -10,36 +10,39 @@ localeTitle: الخط الأسرة الملكية
لتغيير خط جزء من النص ، اكتب محدد النص المحدد وزوج من الأقواس المتعرجة. داخل الأقواس ، اكتب `font-family:` ثم اسم الخط. إذا كان اسم الخط يحتوي على أكثر من كلمة واحدة ، فستحتاج إلى استخدام علامتي اقتباس مفردتين أو مزدوجتين. خلاف ذلك ، ليست هناك حاجة لأسعار.
`
<p>This font will be in Times New Roman.</p>
`
```html
<p>This font will be in Times New Roman.</p>
```
`p {
font-family: 'Times New Roman';
}
`
```css
p {
font-family: 'Times New Roman';
}
```
لكن العديد من الأشخاص المختلفين الذين لديهم أجهزة كمبيوتر مختلفة يتصفحون الويب على مستوى العالم. هذا يعني أنه لن يكون لدى الجميع New Times Roman مثبتًا في أجهزة الكمبيوتر الخاصة بهم. لمساعدة هؤلاء المستخدمين ، يجب عليك إضافة الخطوط الاحتياطية. الخطوط الاحتياطية هي خطوط أخرى يستخدمها المتصفح في حالة عدم توفر الخط الأول. إضافة فاصلة بعد الخط الأول ، وأضف اسم الخط الاحتياطي الأول. يمكنك استخدام أكثر من خط احتياطي واحد.
`
<p>This font may or may not be in Lato.</p>
`
```html
<p>This font may or may not be in Lato.</p>
```
`p {
font-family: Lato, Helvetica, Georgia;
/* Helvetica and Georgia are fallback fonts */
}
`
```css
p {
font-family: Lato, Helvetica, Georgia;
/* Helvetica and Georgia are fallback fonts */
}
```
إذا لم يكن المستخدم مثبتًا على Lato أولاً ، فسيحاول المتصفح استخدام Helvetica. إذا لم يكن لدى المستخدم أيضًا Helvetica ، فسيحاول المتصفح استخدام جورجيا. إذا لم يكن لدى المستخدم جورجيا ، فسيستخدم المتصفح خطًا مثبتًا على جهاز الكمبيوتر الخاص بالمستخدم.
بالنسبة إلى الخطوط الاحتياطية ، يمكنك استخدام الخطوط المسماة مثل جورجيا. يمكنك أيضًا استخدام أنواع عامة مثل "sans-serif" و "serif" و "monospace" وغيرها. خطوط Sans-serif ، مثل Lato ، هي خطوط بدون خطوط صغيرة في نهايات الحروف والأرقام. تستخدم خطوط Serif ، مثل Times New Roman ، خطوطًا صغيرة في نهايات الحروف والأرقام. تحتوي خطوط Monospace ، مثل Consolas ، على أحرف وأرقام متساوية العرض.
`
<p>This font may or may not be in Lato.</p>
`
```html
<p>This font may or may not be in Lato.</p>
```
`p {
font-family: Lato, sans-serif, monospace;
}
`
```css
p {
font-family: Lato, sans-serif, monospace;
}
```

View File

@ -8,8 +8,9 @@ localeTitle: حجم الخط الممتلكات
يتم استخدام الخاصية `font-size` لتعيين حجم خط العنصر. يوجد أدناه بناء الجملة الافتراضي لهذه الخاصية.
`font-size:medium|xx-small|x-small|small|large|x-large|xx-large|smaller|larger|length|initial|inherit;
`
```css
font-size:medium|xx-small|x-small|small|large|x-large|xx-large|smaller|larger|length|initial|inherit;
```
كما هو موضح أعلاه ، يمكن أن تأخذ هذه الخاصية عدة قيم. القيمة الافتراضية هي _متوسطة الحجم_ والقيم من _xx-small_ إلى _xx-large_ تحدد حجم الخط من صغير جدًا إلى كبير جدًا (مثل أحجام الملابس). تحدد القيم _الأصغر_ _والأكبر_ حجم الخط إلى أصغر من حجم خط العنصر الأصلي وأكبر من حجم خط العنصر الأصلي ، على التوالي. على الرغم من توافر القيم المذكورة ، فإن أكثر أنواع القيم المستخدمة شيوعًا هو وحدة الطول. قد تتضمن وحدات الطول: **px** و **٪** و **em** و **rem** و **pt** .
@ -21,10 +22,11 @@ localeTitle: حجم الخط الممتلكات
**مثال:**
`p {
font-size: 20px;
}
`
```css
p {
font-size: 20px;
}
```
**نتيجة:** ![مثال واحد](https://image.prntscr.com/image/TI_29z3FRO20dJD2Dc7JJA.png)
@ -34,10 +36,11 @@ localeTitle: حجم الخط الممتلكات
**مثال:**
`p {
font-size: 120%;
}
`
```css
p {
font-size: 120%;
}
```
**نتيجة:** ![المثال الثاني](https://image.prntscr.com/image/P9HTpWbETeyjZhxzf9z-SA.png) يغيّر الرمز أعلاه حجم الخط إلى 120٪ من حجم الخط الافتراضي وهو 16 بكسل.
@ -47,10 +50,11 @@ localeTitle: حجم الخط الممتلكات
**مثال:**
`p {
font-size: 1.4em;
}
`
```css
p {
font-size: 1.4em;
}
```
**نتيجة:** ![المثال الثالث](https://image.prntscr.com/image/AeCJ0TCbRHqOTAFJ9CYNUQ.png) يعيّن الرمز أعلاه حجم الخط في الفقرة إلى 1.4 مرة حجم الخط من أقرب أصل وهو العنصر الأساسي. يحتوي عنصر النص على حجم خط افتراضي يبلغ 16 بكسل ، لذا سيكون لهذه الفقرة حجم خط يبلغ 1.4 \* 16 = 22.4 بكسل.
@ -76,10 +80,11 @@ localeTitle: حجم الخط الممتلكات
**مثال:**
`p {
font-size: 16pt;
}
`
```css
p {
font-size: 16pt;
}
```
**نتيجة:** ![المثال الخامس](https://image.prntscr.com/image/IyOOr_WCT963wa0DoWyoOg.png) حجم الخط أعلاه هو 16 نقطة.

View File

@ -6,10 +6,11 @@ localeTitle: الخط البديل
يتم استخدام خاصية متغير الخط الأكثر شيوعًا لتغيير النص المستهدف إلى أحرف استهلالية صغيرة. القيمة الافتراضية أمر `normal` .
`p {
font-variant: small-caps;
}
`
```css
p {
font-variant: small-caps;
}
```
يقبل مكان الإقامة أيضًا `all-small-caps` `petite-caps` `all-petite-caps` `titling-caps` و `unicase` . ومع ذلك ، فهي جديدة في CSS3 ولم يتم دعمها بشكل جيد بعد.

View File

@ -6,16 +6,17 @@ localeTitle: خاصية تباعد الأحرف
تقوم خاصية تباعد الحروف بتعديل المسافة بين كل الحروف في كتلة النص. ويشار إليه أيضًا باسم "التعقب" في شروط الطباعة وفي البرامج ذات خيارات إعداد النوع المتقدمة. يقبل الموقع قيم طول `px` و `em` ، بما في ذلك القيم السالبة.
`.first-example {
letter-spacing: 3px;
}
.second-example {
letter-spacing: -1px;
}
.third-example {
letter-spacing: 0.5em;
}
`
```css
.first-example {
letter-spacing: 3px;
}
.second-example {
letter-spacing: -1px;
}
.third-example {
letter-spacing: 0.5em;
}
```
![نتيجة CSS](https://github.com/kaithrendyle/guide-photos/blob/master/letter-spacing.png)

View File

@ -8,24 +8,25 @@ localeTitle: خاصية تحويل النص
أكثر القيم استخدامًا لهذه الخاصية هي `lowercase` `uppercase` `capitalize` .
`<style>
.lowercased {
text-transform: lowercase;
}
.uppercased {
text-transform: uppercase;
}
.capitalized {
text-transform: capitalize;
}
</style>
<p class="uppercased">this text was lowercase.</p> <!-- = THIS TEXT WAS LOWERCASE. -->
<p class="lowercased">THIS TEXT WAS UPPERCASE.</p> <!-- = this text was uppercase. -->
<p class="capitalized">this text wasn't capitalized.</p> <!-- = This Text Wasn't Capitalized. -->
`
```
<style>
.lowercased {
text-transform: lowercase;
}
.uppercased {
text-transform: uppercase;
}
.capitalized {
text-transform: capitalize;
}
</style>
<p class="uppercased">this text was lowercase.</p> <!-- = THIS TEXT WAS LOWERCASE. -->
<p class="lowercased">THIS TEXT WAS UPPERCASE.</p> <!-- = this text was uppercase. -->
<p class="capitalized">this text wasn't capitalized.</p> <!-- = This Text Wasn't Capitalized. -->
```
#### معلومات اكثر:

View File

@ -12,10 +12,11 @@ localeTitle: الملكية الفضائية البيضاء
#### مثال
`p {
white-space: nowrap;
}
`
```
p {
white-space: nowrap;
}
```
#### القيم

View File

@ -12,11 +12,12 @@ z-index: auto | number | initial | inherit؛
#### مثال
`div {
position: absolute;
z-index: -1;
}
`
```
div {
position: absolute;
z-index: -1;
}
```
#### القيم

View File

@ -10,19 +10,20 @@ localeTitle: صف دراسي
خلافا لأسماء فئة "معرف" CSS ليست فريدة. لذلك ، لا بأس من استخدام "class" عدة مرات إذا كنت ترغب في أن يكون لهذه العناصر نفس النمط المطبق. في الواقع ، سيكون هذا وقتًا رائعًا لاستخدام "الفئة". إذا كنت ترغب في وجود ثلاثة عناصر "div" في HTML لديك خلفية زرقاء ، يمكنك استخدام فئة مرة واحدة في CSS كما يظهر في المثال أدناه.
`<html>
<style>
.blueBg {
background-color: blue;
}
</style>
<body>
<div class="blueBg"></div>
<div class="blueBg"></div>
<div class="blueBg"></div>
</body>
</html>
`
```
<html>
<style>
.blueBg {
background-color: blue;
}
</style>
<body>
<div class="blueBg"></div>
<div class="blueBg"></div>
<div class="blueBg"></div>
</body>
</html>
```
#### معلومات اكثر:

View File

@ -10,7 +10,8 @@ localeTitle: علامة الدولار تساوي
إذا كنت تريد البحث في جميع روابط الربط بنوع الملف .pdf وجعلها حمراء ، فيمكنك القيام بذلك على النحو التالي:
`a[href$=".pdf"] {
color: red;
}
`
```css
a[href$=".pdf"] {
color: red;
}
```

View File

@ -10,7 +10,8 @@ localeTitle: نجمة
إذا كنت تريد البحث في جميع روابط الربط التي تحتوي على "رمز" في أي مكان في قيمة عنوان URL وجعلها صفراء ، فيمكنك إجراء ذلك على النحو التالي:
`a[href*="code"] {
color: yellow;
}
`
```css
a[href*="code"] {
color: yellow;
}
```

View File

@ -8,17 +8,19 @@ localeTitle: طفل
في ما يلي مثال على البنية:
`first selector (parent) > second selector (child) {
css declarations;
}
`
```css
first selector (parent) > second selector (child) {
css declarations;
}
```
في ما يلي مثال الكود الذي يطابق كل عنصر `span` الفوري مع أصل `div` :
`div > span {
background-color: red;
}
`
```css
div > span {
background-color: red;
}
```
### معلومات اكثر:

View File

@ -8,24 +8,27 @@ localeTitle: نوع
#### كود النحو
`* {
css declarations;
}
`
```css
* {
css declarations;
}
```
#### مثال الكود
`h1 {
background-color: red;
}
`
```css
h1 {
background-color: red;
}
```
يختار كل عنصر h1 وتعيين لون الخلفية باللون الأحمر.
`div {
width: 100px;
}
`
```css
div {
width: 100px;
}
```
يختار كل عنصر div وعرض عنصر العرض 100 بكسل.

View File

@ -8,35 +8,40 @@ localeTitle: عالمي
### كود النحو
`* {
css declarations;
}
`
```css
* {
css declarations;
}
```
`element * {
css declarations;
}
`
```css
element * {
css declarations;
}
```
#### مثال الكود
يطابق هذا المحدد جميع العناصر ويضبط لون الخط كمؤشر أخضر.
`* {
color: green;
}
`
```css
* {
color: green;
}
```
يحدد هذا المحدد جميع عناصر div ويضبط لون الخط كملف أخضر.
`div * {
color: green;
}
`
```css
div * {
color: green;
}
```
يحدد هذا المحدد جميع العناصر التي تبدأ قيمة سمة اللغة الخاصة بها بـ en.
`* [lang^=en] {
color: green;
}
`
```css
* [lang^=en] {
color: green;
}
```

View File

@ -10,16 +10,17 @@ localeTitle: محددات
ستتراكم المحضرات مرتبة في تسلسل محدد لقاعدة لاستهداف العناصر. مثال،
`/* selects anchor tags */
a {
color: orange;
}
/* selects elements with hero class */
.hero {
text-align: center;
}
`
```css
/* selects anchor tags */
a {
color: orange;
}
/* selects elements with hero class */
.hero {
text-align: center;
}
```
## نوع من المحددات

View File

@ -10,14 +10,15 @@ localeTitle: نشيط
في المثال أدناه ، عندما ينقر مستخدم على رابط ، سيتغير لون النص من الأسود إلى الأحمر إلى أن يتوقف إجراء النقر.
`a {
color: black;
}
a:active {
color: red;
}
`
```css
a {
color: black;
}
a:active {
color: red;
}
```
#### معلومات اكثر:

View File

@ -33,25 +33,27 @@ localeTitle: التركيز
بناء الجملة:
`:focus
`
```css
:focus
```
## مثال
HTML:
`
<form>
<input type="text" value="The background will turn yellow when you click on it.">
</form>
`
```html
<form>
<input type="text" value="The background will turn yellow when you click on it.">
</form>
```
CSS:
`input:focus {
background-color: yellow;
}
`
```css
input:focus {
background-color: yellow;
}
```
#### معلومات اكثر:

View File

@ -19,69 +19,69 @@ The `selector:hover` يتم تشغيل فئة pseudo-class عند التفاعل
1. عندما تقوم بتحريك مؤشر الماوس فوق عنصر ما ، قم بتغيير الأخوة المجاورة.
`
<style>
.first:hover + .second {
background-color: blue;
}
</style>
<div class="first">First</div>
<div class="second">Second</div>
`
```html
<style>
.first:hover + .second {
background-color: blue;
}
</style>
<div class="first">First</div>
<div class="second">Second</div>
```
سيعمل الرمز أعلاه على تغيير لون خلفية `.second` إلى blue عند تحريك مؤشر الماوس فوق `.first` .
2. عندما تقوم بتحريك مؤشر الماوس فوق عنصر ما ، قم بتغيير الأخوة العامة.
`
<style>
.first:hover ~ .second {
background-color: blue;
}
</style>
<div class="first">First</div>
<div class="middle">Middle</div>
<div class="second">Second</div>
`
```html
<style>
.first:hover ~ .second {
background-color: blue;
}
</style>
<div class="first">First</div>
<div class="middle">Middle</div>
<div class="second">Second</div>
```
يعطي هذا المثال مرونة أكثر قليلاً حيث لم يعد من الضروري أن يكون العنصران متجاورين مباشرة.
3. عندما تقوم بتحريك مؤشر الماوس فوق عنصر ما ، قم بتغيير سليل مباشر.
`
<style>
.first:hover > .second {
background-color: blue;
}
</style>
<div class="first">
First
<div class="second">Second</div>
</div>
`
```html
<style>
.first:hover > .second {
background-color: blue;
}
</style>
<div class="first">
First
<div class="second">Second</div>
</div>
```
سيعمل الرمز أعلاه على تغيير لون خلفية `.second` إلى blue عند تحريك مؤشر الماوس فوق `.first` .
4. عندما تقوم بتحريك مؤشر الماوس فوق عنصر ، قم بتغيير سلال عام.
`
<style>
.first:hover .second {
background-color: blue;
}
</style>
<div class="first">
First
<div class="container">
Container
<div class="second">Second</div>
</div>
</div>
`
```html
<style>
.first:hover .second {
background-color: blue;
}
</style>
<div class="first">
First
<div class="container">
Container
<div class="second">Second</div>
</div>
</div>
```
وكما في المثال 2 ، فإن هذا يمنح المزيد من المرونة حيث أن العنصرين لم يعد من الضروري أن يكونا متجاورين مباشرة. ستلاحظ أن المساحة التي يمكن `.first` أكبر في الأمثلة 3 و 4. يحدث هذا لأنك لا تزال تحوم فوق `.first` ما دام المؤشر فوق أحد أطفاله.

View File

@ -8,16 +8,18 @@ localeTitle: حلقة الوصل
بناء الجملة العام:
`target:link
`
```css
target:link
```
## مثال
`/* Selects any <a> that has not been visited yet */
a:link {
color: red;
}
`
```css
/* Selects any <a> that has not been visited yet */
a:link {
color: red;
}
```
#### معلومات اكثر:

View File

@ -6,38 +6,41 @@ localeTitle: هيكل CSS
تتبع قاعدة CSS هذا الهيكل الأساسي:
`selector {
property: value;
property: value;
}
`
```CSS
selector {
property: value;
property: value;
}
```
كل شيء داخل الأقواس المتعرجة يتناسب مع كل ما يختاره [المختار](https://guide.freecodecamp.org/css/selectors) . يوجد داخل قواعد CSS مجموعة من أزواج [الخصائص](https://guide.freecodecamp.org/css/properties) / القيمة.
يمكن أن يكون لديك محددات مختلفة مفصولة بغيبوبة:
`selector1,
selector2 {
property: value;
}
`
```CSS
selector1,
selector2 {
property: value;
}
```
يمكن وضع قواعد CSS متعددة في ملف CSS واحد - إليك مثال على ذلك:
`h1 {
color: red;
}
div {
text-align: center;
color: blue;
}
img {
margin-left: 2px;
margin-top: 100px;
}
`
```CSS
h1 {
color: red;
}
div {
text-align: center;
color: blue;
}
img {
margin-left: 2px;
margin-top: 100px;
}
```
#### معلومات اكثر:

View File

@ -6,10 +6,11 @@ localeTitle: روابط التصميم
يمكن تنسيق الارتباطات مع أي خاصية CSS ، مثل `color` ، `font-family` ، و `font-size` ، و `padding` . هنا مثال سهل:
`a {
color: hotpink;
}
`
```css
a {
color: hotpink;
}
```
## بالإضافة إلى ذلك ، يمكن تنسيق الوصلات بشكل مختلف اعتمادًا على الحالة التي توجد فيها.
@ -40,11 +41,12 @@ localeTitle: روابط التصميم
إليك بعض نماذج CSS باستخدام الحالات الأربع:
`a:link { color: red; }
a:visited { color: blue; }
a:hover { color: green; }
a:active { color: blue; }
`
```css
a:link { color: red; }
a:visited { color: blue; }
a:hover { color: green; }
a:active { color: blue; }
```
**لاحظ** أن هناك بعض _قواعد الترتيب_ عندما تقوم بتعيين نمط حالات الارتباط.
@ -55,23 +57,24 @@ localeTitle: روابط التصميم
a: رابط - رابط طبيعي غير مرغوب فيه a: زار - رابط زاره المستخدم a: hover - رابط عندما يضغط المستخدم عليه ج: نشط - رابط لحظة النقر فوقه
`/* unvisited link */
a:link {
color: red;
}
/* visited link */
a:visited {
color: green;
}
/* mouse over link */
a:hover {
color: hotpink;
}
/* selected link */
a:active {
color: blue;
}
`
```css
/* unvisited link */
a:link {
color: red;
}
/* visited link */
a:visited {
color: green;
}
/* mouse over link */
a:hover {
color: hotpink;
}
/* selected link */
a:active {
color: blue;
}
```

View File

@ -37,9 +37,10 @@ localeTitle: ظل النص
المغلق text-shadow: 1px - 2px 5px # a4a4a4؛
`### Example of multiple shadows
Multiple shadows can be used for giving text a solid outline on all 4 directions, like a bubble-writing effect.
`
```
### Example of multiple shadows
Multiple shadows can be used for giving text a solid outline on all 4 directions, like a bubble-writing effect.
```
المغلق ظل نص: 1 بكسل × 1 بكسل أسود ، 0 1 بكسل × 1 بكسل أسود ، 1 بكسل × 1 بكسل أسود ، 0 - 1 بكسل × 1 بكسل أسود ؛ \`\` \`

View File

@ -6,17 +6,19 @@ localeTitle: انتقال
و `transition` الملكية يسمح لك بتغيير قيمة العقارات بشكل سلس (من قيمة واحدة إلى أخرى)، خلال مدة معينة. \`\` \`المغلق الانتقال: كل 300ms.
`### Transition on Several Property Values
You can change multiples property values with transition property.
`
```
### Transition on Several Property Values
You can change multiples property values with transition property.
```
المغلق الانتقال: عرض 300ms ، ارتفاع 2s ؛
`### Specify the Speed Curve of the Transition
You can specify a speed curve on an element in transition property.
`
```
### Specify the Speed Curve of the Transition
You can specify a speed curve on an element in transition property.
```
المغلق الانتقال: ارتفاع 2s خطي؛

View File

@ -14,13 +14,13 @@ localeTitle: دليل لمتخصصي الصف واختياري
لنفترض أن لديك 5 عناصر في شفرة HTML.
`
<p> First paragraph </p>
<p> Second paragraph </p>
<p> Third paragraph </p>
<p> Fourth paragraph </p>
<p> Fifth paragraph </p>
`
```html
<p> First paragraph </p>
<p> Second paragraph </p>
<p> Third paragraph </p>
<p> Fourth paragraph </p>
<p> Fifth paragraph </p>
```
يمكنك إعطاء كل منهم لون خط أحمر باستخدام CSS.
@ -43,12 +43,12 @@ _فئة وهوية للانقاذ_
هكذا تعمل `class` . يمكنك إعطاء مجموعة من العناصر فئة وستكون في نادٍ واحد. تماما مثل قاعدة جديدة في النادي يجب أن يتبعها جميع أعضاء النادي ، وبالمثل ، يتم تطبيق جميع قواعد نمط جديد على عناصر في نفس النادي.
`
<p class="bike"> Hayabusa </p>
<p class="car"> Chevrolet </p>
<p class="bike"> Hayley-Davidson </p>
<p class="car"> Lamborghini </p>
`
```html
<p class="bike"> Hayabusa </p>
<p class="car"> Chevrolet </p>
<p class="bike"> Hayley-Davidson </p>
<p class="car"> Lamborghini </p>
```
هنا لدينا 4 فقرات. إذا نظرت إلى أسماء الفصل ، فهناك "ناديان". الآن يمكننا اختيار النادي (أو المجموعة) التي نريدها وتطبيق الأنماط التي نريدها عليهم.
@ -67,15 +67,15 @@ _فئة وهوية للانقاذ_
هذا هو معرف. تماما مثل بطاقات الهوية الشخصية ، يمكن أن يكون عنصر HTML واحد فقط `id` معين. لا عناصر لهما نفس `id` .
`
<p id="car"> Ferrari </p>
<p id="car"> Ford </p>
<!-- This is incorrect-->
<p id="harley"> Harley-Davidson </p>
<p id="hayabusa"> Hayabusa </p>
<!--This is correct since an id is only used once.-->
`
```html
<p id="car"> Ferrari </p>
<p id="car"> Ford </p>
<!-- This is incorrect-->
<p id="harley"> Harley-Davidson </p>
<p id="hayabusa"> Hayabusa </p>
<!--This is correct since an id is only used once.-->
```
يمكن أن يكون `id` أيضًا مشابهًا للمفتاح الخاص لخزانة الخزانة في النادي. كل شخص في النادي لديه نفس بطاقة الهوية الخاصة بالنادي ، لكن مفتاح خزانة كل شخص مختلف وفريد.

View File

@ -8,14 +8,15 @@ localeTitle: CSS المختارات الغش ورقة
هنا مثال على استخدام المحددات. في التعليمة البرمجية التالية ، تكون `a` و `h1` محددات:
`a {
color: black;
}
h1 {
font-size 24px;
}
`
```css
a {
color: black;
}
h1 {
font-size 24px;
}
```
## قائمة الغش من المحددات

View File

@ -12,37 +12,41 @@ localeTitle: مقدمة في CSS
تسمح CSS لمعلمات بتوضيح كيفية ظهور كل جزء من محتوى المطابقة.
`body {
font-size: 15px;
}
a {
color: rebeccapurple;
text-decoration: underline;
}
`
```CSS
body {
font-size: 15px;
}
a {
color: rebeccapurple;
text-decoration: underline;
}
```
### استخدام المغلق
تسمح **أوراق الأنماط الخارجية** لصفحات كثيرة بمشاركة نفس الأنماط.
`<link href="styles.css" rel="stylesheet" type="text/css">
`
```HTML
<link href="styles.css" rel="stylesheet" type="text/css">
```
تطبق **أوراق الأنماط الداخلية** CSS على كل العلامات المطابقة في الصفحة.
`<style>
h1 {
font-family: sans-serif;
margin-bottom: 1.5em;
}
</style>
`
```HTML
<style>
h1 {
font-family: sans-serif;
margin-bottom: 1.5em;
}
</style>
```
تطبق **CSS مضمنة** الأنماط على علامة واحدة.
`<img src="..." style="border: 1px solid red;" />
`
```HTML
<img src="..." style="border: 1px solid red;" />
```
#### معلومات اكثر:

View File

@ -58,15 +58,15 @@ localeTitle: وحدات
مثال
`
p {
font-size: 24px;
}
div {
width: 3in;
border-width: 3pt;
}
`
```html
p {
font-size: 24px;
}
div {
width: 3in;
border-width: 3pt;
}
```
ستظهر `font-size: 24px` بكسل على أنها 24 بكسل على الهاتف أو الجهاز اللوحي أو شاشة سطح المكتب.

View File

@ -21,11 +21,11 @@ localeTitle: استخدام الرسوم المتحركة CSS
في جزء HTML ، سيكون لدينا مستند `div` مع `container` للفئة و `h3` مع النص `Hello World` :
`
<div class="container">
<h3> Hello World ! </h3>
</div>
`
```html
<div class="container">
<h3> Hello World ! </h3>
</div>
```
بالنسبة لجزء CSS:

View File

@ -8,10 +8,11 @@ localeTitle: عمودي محاذاة CSS
على سبيل المثال ، يمكنك أن تكون `vertical-align` مثل هذه لمحاذاة صورة:
`img {
vertical-align: top;
}
`
```
img {
vertical-align: top;
}
```
هذه هي القيم الصالحة `vertical-align` :

View File

@ -24,10 +24,11 @@ localeTitle: خطوط الويب الآمنة
تجدر الإشارة إلى أنه يجب استخدام مداخلات الخط مع خيارات الاحتياطي بما في ذلك عائلة الخطوط العامة حتى إذا كان التصميم الخاص بك يستخدم الخطوط الآمنة للويب فقط. فمثلا:
`p {
font-family: Tahoma, Arial, sans-serif;
}
`
```css
p {
font-family: Tahoma, Arial, sans-serif;
}
```
#### ملاحظة على خطوط الويب

View File

@ -6,10 +6,11 @@ localeTitle: سوف يتغير
تسمح لك خاصية will-change بإخبار المتصفح عن التلاعبات التي ستحدث مع العنصر من أجل تحسينها.
`.container {
will-change: transform;
}
`
```css
.container {
will-change: transform;
}
```
سيتم استخدام خاصية will-change في الفئة `.container` ، في هذه الحالة ، قد يحدث أو لا يحدث التحويل على العنصر.

View File

@ -10,20 +10,21 @@ Z Index ( `z-index` ) هي خاصية CSS تقوم بتعريف ترتيب عن
#### القيم الممكنة
`/* Default value if not specified */
z-index: auto;
/* Integer values */
z-index: 1;
z-index: 100;
z-index: 9999;
z-index: -1;
/* Global values */
z-index: inherit;
z-index: initial;
z-index: unset;
`
```css
/* Default value if not specified */
z-index: auto;
/* Integer values */
z-index: 1;
z-index: 100;
z-index: 9999;
z-index: -1;
/* Global values */
z-index: inherit;
z-index: initial;
z-index: unset;
```
#### مثال للاستخدام
@ -31,28 +32,29 @@ Z Index ( `z-index` ) هي خاصية CSS تقوم بتعريف ترتيب عن
_HTML_
`
<div class="container">
<div class="box" id="blue"></div>
<div class="box" id="red"></div>
<div class="box" id="green"></div>
</div>
`
```html
<div class="container">
<div class="box" id="blue"></div>
<div class="box" id="red"></div>
<div class="box" id="green"></div>
</div>
```
_CSS_
`#blue {
background-color: blue;
}
#red {
background-color: red;
}
#green {
background-color: green;
}
`
```css
#blue {
background-color: blue;
}
#red {
background-color: red;
}
#green {
background-color: green;
}
```
بما أنه لم يتم تعريف `z-index` ، فستكون له قيمة افتراضية من `auto` . هذه نتيجة:
@ -60,21 +62,22 @@ _CSS_
حاول تغيير الترتيب إلى الأخضر والأزرق والأحمر في CSS باستخدام `z-index` .
`#blue {
background-color: blue;
z-index: 2;
}
#red {
background-color: red;
z-index: 1;
}
#green {
background-color: green;
z-index: 3;
}
`
```css
#blue {
background-color: blue;
z-index: 2;
}
#red {
background-color: red;
z-index: 1;
}
#green {
background-color: green;
z-index: 3;
}
```
ستكون النتيجة الخاصة بك:
@ -82,10 +85,11 @@ _CSS_
استخدم Z Index إذا كنت بحاجة إلى وضع عنصر خلفية أسفل الحاوية. يمكنك وضع الخلفية بسهولة تحت كل عنصر عن طريق إعطائها مؤشر Z سلبي مثل أدناه:
`#background {
z-index: -1;
}
`
```css
#background {
z-index: -1;
}
```
#### معلومات اكثر:

View File

@ -8,16 +8,16 @@ localeTitle: إعداد D3
ابدأ بصفحة HTML الأساسية على الويب:
`
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Hello!</p>
</body>
</html>
`
```html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Hello!</p>
</body>
</html>
```
الذي يظهر في المتصفح:

View File

@ -14,10 +14,11 @@ Apache Flink هو إطار مفتوح المصدر لتجهيز التدفق م
* جافا 7 أو 8
* IntelliJ IDEA أو Eclipse IDE
`git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
`
```
git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
```
### قواعد البيانات
@ -33,18 +34,19 @@ Apache Flink هو إطار مفتوح المصدر لتجهيز التدفق م
أول شيء سنقوم به هو إنشاء بيئة التنفيذ وتحميل ملفات csv في مجموعة بيانات. مثله:
`ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<Tuple3<Long, String, String>> movies = env.readCsvFile("ml-latest-small/movies.csv")
.ignoreFirstLine()
.parseQuotedStrings('"')
.ignoreInvalidLines()
.types(Long.class, String.class, String.class);
DataSet<Tuple2<Long, Double>> ratings = env.readCsvFile("ml-latest-small/ratings.csv")
.ignoreFirstLine()
.includeFields(false, true, true, false)
.types(Long.class, Double.class);
`
```
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<Tuple3<Long, String, String>> movies = env.readCsvFile("ml-latest-small/movies.csv")
.ignoreFirstLine()
.parseQuotedStrings('"')
.ignoreInvalidLines()
.types(Long.class, String.class, String.class);
DataSet<Tuple2<Long, Double>> ratings = env.readCsvFile("ml-latest-small/ratings.csv")
.ignoreFirstLine()
.includeFields(false, true, true, false)
.types(Long.class, Double.class);
```
هناك ، نحن نجعل مجموعة البيانات مع للأفلام ، وتجاهل الأخطاء ، والاقتباسات ، وخط الرأس ، ومجموعة البيانات مع بالنسبة إلى تقييمات الأفلام ، مع تجاهل أيضًا الرأس ، والخطوط والعروض غير الصالحة.
@ -54,40 +56,41 @@ Apache Flink هو إطار مفتوح المصدر لتجهيز التدفق م
أولاً سننضم إلى مجموعة بيانات التصنيفات مع مجموعة بيانات الأفلام حسب الأفلام الموجودة في كل مجموعة بيانات. مع هذا سنقوم بإنشاء Tuple جديد مع اسم الفيلم والنوع والنتيجة. في وقت لاحق ، نقوم بتجميع هذه المجموعة حسب النوع وإضافة مجموع كل الأنواع المتساوية ، وأخيرا نقسم النتيجة على مجموع النتائج ولدينا النتيجة المرجوة.
`List<Tuple2<String, Double>> distribution = movies.join(ratings)
.where(0)
.equalTo(0)
.with(new JoinFunction<Tuple3<Long, String, String>,Tuple2<Long, Double>, Tuple3<StringValue, StringValue, DoubleValue>>() {
private StringValue name = new StringValue();
private StringValue genre = new StringValue();
private DoubleValue score = new DoubleValue();
private Tuple3<StringValue, StringValue, DoubleValue> result = new Tuple3<>(name,genre,score);
@Override
public Tuple3<StringValue, StringValue, DoubleValue> join(Tuple3<Long, String, String> movie,Tuple2<Long, Double> rating) throws Exception {
name.setValue(movie.f1);
genre.setValue(movie.f2.split("\\|")[0]);
score.setValue(rating.f1);
return result;
}
})
.groupBy(1)
.reduceGroup(new GroupReduceFunction<Tuple3<StringValue,StringValue,DoubleValue>, Tuple2<String, Double>>() {
@Override
public void reduce(Iterable<Tuple3<StringValue,StringValue,DoubleValue>> iterable, Collector<Tuple2<String, Double>> collector) throws Exception {
StringValue genre = null;
int count = 0;
double totalScore = 0;
for(Tuple3<StringValue,StringValue,DoubleValue> movie: iterable){
genre = movie.f1;
totalScore += movie.f2.getValue();
count++;
}
collector.collect(new Tuple2<>(genre.getValue(), totalScore/count));
}
})
.collect();
`
```
List<Tuple2<String, Double>> distribution = movies.join(ratings)
.where(0)
.equalTo(0)
.with(new JoinFunction<Tuple3<Long, String, String>,Tuple2<Long, Double>, Tuple3<StringValue, StringValue, DoubleValue>>() {
private StringValue name = new StringValue();
private StringValue genre = new StringValue();
private DoubleValue score = new DoubleValue();
private Tuple3<StringValue, StringValue, DoubleValue> result = new Tuple3<>(name,genre,score);
@Override
public Tuple3<StringValue, StringValue, DoubleValue> join(Tuple3<Long, String, String> movie,Tuple2<Long, Double> rating) throws Exception {
name.setValue(movie.f1);
genre.setValue(movie.f2.split("\\|")[0]);
score.setValue(rating.f1);
return result;
}
})
.groupBy(1)
.reduceGroup(new GroupReduceFunction<Tuple3<StringValue,StringValue,DoubleValue>, Tuple2<String, Double>>() {
@Override
public void reduce(Iterable<Tuple3<StringValue,StringValue,DoubleValue>> iterable, Collector<Tuple2<String, Double>> collector) throws Exception {
StringValue genre = null;
int count = 0;
double totalScore = 0;
for(Tuple3<StringValue,StringValue,DoubleValue> movie: iterable){
genre = movie.f1;
totalScore += movie.f2.getValue();
count++;
}
collector.collect(new Tuple2<>(genre.getValue(), totalScore/count));
}
})
.collect();
```
مع هذا سيكون لديك تطبيق حرفة معالجة دفعة واحدة. استمتع!.

View File

@ -45,10 +45,11 @@ Apache Flink هو إطار مفتوح المصدر لتجهيز التدفق م
* مي Mن (نوصي بالإصدار 3.0.4)
* جافا 7 أو 8
`git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
`
```
git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes
```
## تطوير فلينك

View File

@ -12,8 +12,9 @@ localeTitle: الباندا
هو اصطلاح يستخدم على نطاق واسع لاستيراد مكتبة الباندا باستخدام الاسم المستعار `pd` :
`import pandas as pd
`
```python
import pandas as pd
```
## إطارات البيانات
@ -27,8 +28,9 @@ localeTitle: الباندا
ملف `.csv` هو ملف _قيمة مفصولة بفواصل_ . طريقة شائعة جدا لتخزين البيانات. لتحميل هذه البيانات في إطار بيانات `read_csv` ، استخدم الطريقة `read_csv` :
`df = pd.read_csv(file_path)
`
```python
df = pd.read_csv(file_path)
```
هنا ، يمكن أن يكون `file_path` مسارًا محليًا لملف csv على جهاز الكمبيوتر الخاص بك ، أو عنوان url يشير إلى واحد. قد يتم تضمين أسماء الأعمدة في ملف csv ، أو قد يتم تمريرها كوسيطة. لمزيد من المعلومات حول هذا ، وأكثر من ذلك بكثير ، ألق نظرة على [الوثائق](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html?highlight=read_csv#pandas.read_csv) .
@ -36,22 +38,25 @@ localeTitle: الباندا
لإظهار الصفوف القليلة الأولى من إطار البيانات ، تكون طريقة `head` مفيدة (مرة أخرى يجب أن يبدو هذا مألوفًا لمبرمجي R):
`df.head()
`
```python
df.head()
```
سيظهر هذا الصفوف الخمسة الأولى من إطار البيانات.
لعرض أكثر من أول 5 صفوف ، قم ببساطة بوضع عدد الصفوف التي تريد طباعتها داخل طريقة `head` .
`df.head(10)
`
```python
df.head(10)
```
سيظهر هذا أول 10 صفوف من إطار البيانات.
لإظهار الصفوف القليلة الأخيرة من إطار البيانات ، تكون طريقة `tail` مفيدة (مرة أخرى يجب أن يبدو هذا مألوفًا لمبرمجي R):
`df.tail()
`
```python
df.tail()
```
سيظهر هذا آخر 5 صفوف من إطار البيانات.
@ -59,8 +64,9 @@ localeTitle: الباندا
يمكن أن يكون إطار البيانات جزئيًا بعدة طرق. واحد من أبسط هو الحصول على عمود واحد. على سبيل المثال ، إذا كان إطار البيانات `df` يحتوي على عمود اسمه `age` ، فيمكننا استخلاصه كما يلي:
`ages=df["age"]
`
```python
ages=df["age"]
```
#### معلومات اكثر:

View File

@ -34,10 +34,11 @@ Docker هو برنامج مفتوح المصدر يهدف إلى تسهيل نش
بمجرد تثبيت حاول هذا
`$ docker run hello-world
Hello from Docker!
`
```
$ docker run hello-world
Hello from Docker!
```
تظهر هذه الرسالة أن التثبيت الخاص بك يبدو أنه يعمل بشكل صحيح.

View File

@ -32,20 +32,21 @@ localeTitle: أرض
#### package.json
`{
"name": "project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "latest",
"grunt-contrib-htmlmin": "latest",
"grunt-postcss": "latest",
"autoprefixer": "latest",
"cssnano": "latest",
"grunt-contrib-uglify": "latest",
"grunt-contrib-imagemin": "latest",
}
}
`
```json
{
"name": "project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "latest",
"grunt-contrib-htmlmin": "latest",
"grunt-postcss": "latest",
"autoprefixer": "latest",
"cssnano": "latest",
"grunt-contrib-uglify": "latest",
"grunt-contrib-imagemin": "latest",
}
}
```
#### Gruntfile.js

View File

@ -23,32 +23,35 @@ localeTitle: بلع
لبدء استخدام `Gulp` ، فإن الخطوة الأولى هي تثبيته باستخدام `npm` . بعد تثبيته ، يجب إنشاء ملف `gulpfile.js` . ملف `gulpfile` هذا هو ملف يحتوي على جميع مهام `Gulp` التي يجب تشغيلها كجزء من العملية التلقائية. تتم كتابة المهام في JavaScript. في ما يلي مثال بسيط جدًا `gulpfile` ، والذي يأخذ أي ملفات `CSS` من مجلد `client/templates` ، ويقللها ويضع الملف المُصغر في المجلد `build/css` .
`var gulp = require('gulp');
var minifyCSS = require('gulp-csso');
gulp.task('css', function(){
return gulp.src('client/templates/*.css')
.pipe(minifyCSS())
.pipe(gulp.dest('build/css'))
});
`
```javascript
var gulp = require('gulp');
var minifyCSS = require('gulp-csso');
gulp.task('css', function(){
return gulp.src('client/templates/*.css')
.pipe(minifyCSS())
.pipe(gulp.dest('build/css'))
});
```
لتشغيل مهمة gulp هذه ، كل ما عليك فعله هو كتابة `gulp css` في مطراف في جذر مشروعك.
لمشاهدة ملفات CSS لأية تغييرات وتشغيل مهمة "css" بعد حفظها.
`gulp.watch('css')
.on('change', ['css']);
`
```javascript
gulp.watch('css')
.on('change', ['css']);
```
### تبعيات المهام
افتراضيا سيتم تشغيل جولبول جميع المهام المحددة في نفس الوقت وانتظر شيئا. لتشغيل مهمة متعددة بالترتيب الصحيح ، يمكنك إضافة مهمة كتوابع إلى مهمة أخرى.
`gulp.task('two', ['one'], function() {
// task 'one' is done now
});
`
```javascript
gulp.task('two', ['one'], function() {
// task 'one' is done now
});
```
مع رمز المقتطف أعلاه، مهمة `two` سيتم تشغيل فقط بعد مهمة `one` اكتمال.

View File

@ -8,59 +8,68 @@ localeTitle: npm ورقة الغش
## تثبيت التبعية `package.json`
`npm install
`
```shell
npm install
```
**اختزال**
`# install
npm i <package>
# uninstall
npm un <package>
# update
npm up <package>
`
```shell
# install
npm i <package>
# uninstall
npm un <package>
# update
npm up <package>
```
## قائمة الحزم المثبتة عالميا.
`npm list -g --depth=0
`
```shell
npm list -g --depth=0
```
## إلغاء حزمة عالمية
`npm -g uninstall <name>
`
```shell
npm -g uninstall <name>
```
## ترقية NPM على ويندوز
بعد محاولة عدة مرات لترقية npm على Windows وجدت هذا في حين بدس في مجلدات npm.
`npm-windows-upgrade
`
```shell
npm-windows-upgrade
```
## تحديث الحزم العالمية
لمعرفة الحزم التي تحتاج إلى تحديث ، استخدم:
`npm outdated -g --depth=0
`
```shell
npm outdated -g --depth=0
```
لتحديث الحزم العالمية بشكل فردي ، يمكنك استخدام:
`npm update -g <package> <package> <package>
`
```shell
npm update -g <package> <package> <package>
```
## قائمة البرامج النصية المتاحة لتشغيل
`npm run
`
```shell
npm run
```
## تحديث npm
`npm install -g npm@latest
# using windows? Then use
npm-windows-upgrade
`
```shell
npm install -g npm@latest
# using windows? Then use
npm-windows-upgrade
```
## الأعلام
@ -68,26 +77,30 @@ localeTitle: npm ورقة الغش
## النسخة المثبتة
`npm list # for local packages
`
```shell
npm list # for local packages
```
## عقدة مدير الإصدار `nvm`
لنفترض أنك تريد تثبيت Node v6.9.1 الذي تكتبه على الجهاز:
`nvm install 6
`
```shell
nvm install 6
```
إذا كان لديك إصدارات متعددة من Node.js مثبتة على مساحة العمل الخاصة بك ، يمكنك التبديل إلى إصدار محدد بالكتابة:
`nvm use 4.8.4
`
```shell
nvm use 4.8.4
```
### جعل نسخة عقدة الافتراضي.
لتعيين إصدار افتراضي من العقدة لمساحة العمل الخاصة بك ، فقط اكتب:
`nvm alias default 6
`
```shell
nvm alias default 6
```
حيث كان الإصدار 6 هو الإصدار الذي تريد استخدامه كإعداد افتراضي.

View File

@ -19,20 +19,23 @@ npm مفيد ليس فقط للمشروعات من جانب الخادم. تتو
يستخدم npm عادة من سطر الأوامر. يمكن القول أن الأوامر الواردة أدناه هي الأكثر أهمية للبدء:
`npm init
`
```
npm init
```
تشغيل هذا الأمر في الدليل الجذر لمشروعك يهيئه للاستخدام مع npm عن طريق إنشاء ملف `package.json` . ستطالب ل اسم المشروع والوصف واسم المؤلف وأكثر من ذلك. ثم يتم استخدام هذه المعلومات لملء ملف `package.json` ، والتي سوف تعقد أيضا معلومات حول تبعيات المشروع ومتطلباته. يمكنك تغيير هذه المعلومات يدويًا في وقت لاحق.
`npm install [name-of-package]
`
```
npm install [name-of-package]
```
يقوم هذا بتثبيت حزمة وكل تبعياتها تلقائيًا وحفظها في ملف `package.json` . إذا كنت تقوم بتثبيت تبعية تطوير ، قد ترغب في استخدام `--save-dev` أو `-D` التبديل. سيحفظ npm الحزمة كاعتمادية تطوير.
يتم تثبيت الحزم محليًا في الدليل `node_modules` في الدليل الجذر لمشروعك. في بعض الأحيان قد ترغب في الحصول على حزمة متاحة عبر مشاريع مختلفة. يتم ذلك باستخدام مفتاح `--global` أو `-g` . هذا مفيد في كثير من الأحيان لأدوات التطوير والأدوات المساعدة لسطر الأوامر.
`npm install
`
```
npm install
```
تشغيل تثبيت npm في الدليل الجذر للمشروع دون اسم حزمة معينة ، تثبيت كافة التبعيات المطلوبة لهذا المشروع. هؤلاء يكونون محسوبًا وفقًا لملف `package.json` للمشروع. هذا يدل على قوة npm ، حيث يمكن لأمر واحد جلب عشرات أو مئات من تبعية تلقائيا بالنسبة لك ، ومفيد عند `git clone` مستودع ، على سبيل المثال.

View File

@ -30,27 +30,30 @@ Vagrant هو أداة لبناء وإدارة بيئات الجهاز الظاه
بعد تثبيت Vagrant ، تحقق من عمل التثبيت عن طريق فتح موجه أوامر أو وحدة تحكم جديدة ، وتحقق من توفر المتشرد:
`$ vagrant
Usage: vagrant [options] <command> [<args>]
-v, --version Print the version and exit.
-h, --help Print this help.
# ...
`
```bash
$ vagrant
Usage: vagrant [options] <command> [<args>]
-v, --version Print the version and exit.
-h, --help Print this help.
# ...
```
### ابدء
`$ vagrant init hashicorp/precise64
$ vagrant up
`
```bash
$ vagrant init hashicorp/precise64
$ vagrant up
```
### مربعات
تتم إضافة صناديق إلى Vagrant مع إضافة مربع المتشرد. يقوم هذا بتخزين المربع تحت اسم محدد بحيث يمكن لبيئات Vagrant المتعددة إعادة استخدامه. إذا لم تكن قد أضفت مربعًا حتى الآن ، فيمكنك القيام بذلك الآن:
`$ vagrant box add hashicorp/precise64
`
```bash
$ vagrant box add hashicorp/precise64
```
### العثور على المزيد من الصناديق

View File

@ -18,57 +18,64 @@ Yarn هو مدير حزم لرمزك. يسمح لك باستخدام ومشار
**بدء مشروع جديد**
`yarn init
`
```
yarn init
```
سيفتح الأمر `yarn init` نموذجًا تفاعليًا لإنشاء مشروع غزل. ينشئ `yarn init` `package.json` ملف `package.json` يخزن المعلومات حول مشروعك. سيتم فتح هذا النموذج التفاعلي بالأسئلة التالية:
`name (your-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
`
```
name (your-project):
version (1.0.0):
description:
entry point (index.js):
git repository:
author:
license (MIT):
```
يمكنك إما كتابة الإجابات لكل خيار أو فقط اضغط على إدخال دون كتابة أي شيء لاستخدام الافتراضي أو ترك فارغ. يمكنك دائمًا الانتقال إلى محرر النصوص المفضل لديك لتغيير ملف `package.json` ، إذا لزم الأمر.
يجب أن يكون ملف `package.json` الخاص بك مشابهاً لهذا:
`{
"name": "your-new-project",
"version": "1.0.0",
"description": "A description of your new project.",
"main": "index.js",
"repository": {
"url": "https://github.com/your-username/your-new-project",
"type": "git"
},
"author": "Your Name <your_name@example.com>",
"license": "MIT"
}
`
```
{
"name": "your-new-project",
"version": "1.0.0",
"description": "A description of your new project.",
"main": "index.js",
"repository": {
"url": "https://github.com/your-username/your-new-project",
"type": "git"
},
"author": "Your Name <your_name@example.com>",
"license": "MIT"
}
```
**إضافة تبعية**
`yarn add [package]
`
```
yarn add [package]
```
**ترقية التبعية**
`yarn upgrade [package]
`
```
yarn upgrade [package]
```
**إزالة التبعية**
`yarn remove [package]
`
```
yarn remove [package]
```
**تثبيت جميع تبعيات المشروع**
`yarn install
`
```
yarn install
```
#### معلومات اكثر:

View File

@ -12,24 +12,28 @@ Ansible هو أداة سهلة الاستخدام الآلي. يمكن استخ
تأكد أولاً من أن النظام محدث.
`$ sudo apt-get update
$ sudo apt-get upgrade
`
```
$ sudo apt-get update
$ sudo apt-get upgrade
```
بعد ذلك ، ستحتاج إلى إضافة الحزمة التالية إلى نظامك
`$ sudo apt-get install software-properties-common
`
```
$ sudo apt-get install software-properties-common
```
أضف ppa: ansible / ansible إلى النظام الخاص بك
`$ sudo apt-add-repository ppa:ansible/ansible
`
```
$ sudo apt-add-repository ppa:ansible/ansible
```
قم بتحديث repos الخاص بك مرة أخرى
`$ sudo apt-get update
`
```
$ sudo apt-get update
```
عادة ما تكون هناك خطوات قليلة تشارك في نشر التعليمات البرمجية في الإنتاج (إلى الموقع المباشر). يزداد عدد الخطوات كلما أصبح موقعك / تطبيق / Webapp أكبر وأكثر تعقيدًا.
@ -39,20 +43,22 @@ Ansible هي أداة أتمتة ، يتم استخدامها غالبًا لل
تستخدم لغة تسمى [YAML](https://en.wikipedia.org/wiki/YAML) والتي تسمح لك بوصف المؤثرات القريبة من الإنجليزية البسيطة ، كما يمكنك أن ترى في مثال الوحدة النمطية Ansible:
`---
- yum: name={{contact.item}} state=installed
with_items:
- app_server
- acme_software
- service: name=app_server state=running enabled=yes
`
```YAML
---
- yum: name={{contact.item}} state=installed
with_items:
- app_server
- acme_software
- service: name=app_server state=running enabled=yes
```
أخيرا ، قم بتثبيت الحزمة
`$ sudo apt-get install ansible
`
```
$ sudo apt-get install ansible
```
من المزايا المهمة لاستخدام Ansible هو أنه يستخدم SSH (Secure SHell) بشكل افتراضي ، ويمكن للوحدات أن تقيم على أي جهاز (كمبيوتر) لا يتطلب خوادم أو شواهد أو قواعد بيانات.

View File

@ -35,13 +35,15 @@ _جميع روابط thoses هي ل Docker CE (إصدار المجتمع)_
لاختبار ما إذا كان التطبيق سارًا بشكل جيد ، قم بتشغيل:
`docker --version
`
```
docker --version
```
تأكد من أن لديك مخرجات تبدو كالتالي:
`Docker version 18.06.1-ce, build e68fc7a
`
```
Docker version 18.06.1-ce, build e68fc7a
```
* * *
@ -49,18 +51,19 @@ _جميع روابط thoses هي ل Docker CE (إصدار المجتمع)_
اختبار أن التثبيت الخاص بك يعمل عن طريق تشغيل صورة Docker بسيطة ، مرحبا العالم:
`docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
`
```
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
```
### ما هي الحاويات ثم:
@ -95,91 +98,92 @@ _جميع روابط thoses هي ل Docker CE (إصدار المجتمع)_
Dockerfile هو المكان الذي تكتب فيه التعليمات لبناء صورة Docker. يمكن أن تكون هذه التعليمات: **RUN apt-get y install some-package** : to install a software package **EXPOSE 8000** : لعرض منفذ **ENV ANT\_HOME / usr / local / apache-ant** لتمرير متغير بيئة وما إلى ذلك. بمجرد الانتهاء من إعداد Dockerfile ، يمكنك استخدام الأمر لبناء المرسى لبناء صورة منه. إليك مثال على Dockerfile:
`# Start with ubuntu 14.04
FROM ubuntu:14.04
MAINTAINER freeCodeCamp@gmail.com
# For SSH access and port redirection
ENV ROOTPASSWORD sample
# Turn off prompts during installations
ENV DEBIAN_FRONTEND noninteractive
RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections
# Update packages
RUN apt-get -y update
# Install system tools / libraries
RUN apt-get -y install python3-software-properties \
software-properties-common \
bzip2 \
ssh \
net-tools \
vim \
curl \
expect \
git \
nano \
wget \
build-essential \
dialog \
make \
build-essential \
checkinstall \
bridge-utils \
virt-viewer \
python-pip \
python-setuptools \
python-dev
# Install Node, npm
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs
# Add oracle-jdk7 to repositories
RUN add-apt-repository ppa:webupd8team/java
# Make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
# Update apt
RUN apt-get -y update
# Install oracle-jdk7
RUN apt-get -y install oracle-java7-installer
# Export JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-7-oracle
# Run sshd
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo "root:$ROOTPASSWORD" | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
# Expose Node.js app port
EXPOSE 8000
# Create tap-to-android app directory
RUN mkdir -p /usr/src/my-app
WORKDIR /usr/src/my-app
# Install app dependencies
COPY . /usr/src/my-app
RUN npm install
# Add entrypoint
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["npm", "start"]
`
```
# Start with ubuntu 14.04
FROM ubuntu:14.04
MAINTAINER freeCodeCamp@gmail.com
# For SSH access and port redirection
ENV ROOTPASSWORD sample
# Turn off prompts during installations
ENV DEBIAN_FRONTEND noninteractive
RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections
# Update packages
RUN apt-get -y update
# Install system tools / libraries
RUN apt-get -y install python3-software-properties \
software-properties-common \
bzip2 \
ssh \
net-tools \
vim \
curl \
expect \
git \
nano \
wget \
build-essential \
dialog \
make \
build-essential \
checkinstall \
bridge-utils \
virt-viewer \
python-pip \
python-setuptools \
python-dev
# Install Node, npm
RUN curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
RUN apt-get install -y nodejs
# Add oracle-jdk7 to repositories
RUN add-apt-repository ppa:webupd8team/java
# Make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
# Update apt
RUN apt-get -y update
# Install oracle-jdk7
RUN apt-get -y install oracle-java7-installer
# Export JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-7-oracle
# Run sshd
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo "root:$ROOTPASSWORD" | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
# Expose Node.js app port
EXPOSE 8000
# Create tap-to-android app directory
RUN mkdir -p /usr/src/my-app
WORKDIR /usr/src/my-app
# Install app dependencies
COPY . /usr/src/my-app
RUN npm install
# Add entrypoint
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["npm", "start"]
```
#### معلومات اكثر:

View File

@ -8,36 +8,43 @@ Docker-Compose هو أداة لتحديد وتشغيل تطبيقات Docker م
الخطوات اللازمة لاستخدام عامل الميناء-إنشاء
`1)create a Dockerfile which defines the image and can be produsable every where.
`
```
1)create a Dockerfile which defines the image and can be produsable every where.
```
`2)create a docke-compose yml file to run the services
`
```
2)create a docke-compose yml file to run the services
```
`3)use docker-compose up to start the sevices specified in docker-compose.yml file
`
```
3)use docker-compose up to start the sevices specified in docker-compose.yml file
```
#### الأوامر الأساسية في buser-compose
* الأمر لتشغيل حاويات عامل ميناء
`docker-compose -f docker-compose.yml up
`
```
docker-compose -f docker-compose.yml up
```
* أمر لتشغيل الحاويات في وضع فصل
`docker-compose -f docker-compose.yml up -d
`
```
docker-compose -f docker-compose.yml up -d
```
* الأمر لتشغيل الحاويات بعد بناء الصور مرة أخرى (ملاحظة: المرة الأولى التي نستخدم فيها بناء حاويات حاويات السفن سوف يحدث تلقائيًا)
`docker-compose -f docker-compose.yml --build -d
`
```
docker-compose -f docker-compose.yml --build -d
```
* أمر لإيقاف الحاويات عندما نركض في وضع فصل
`docker-compose -f docker-compose.yml down
`
```
docker-compose -f docker-compose.yml down
```
#### معلومات اكثر:

View File

@ -6,8 +6,9 @@ localeTitle: دوكر وضع منفصلة
يعني الوضع المنفصل ، الموضح في الخيار `--detach` أو `-d` ، أن حاوية Docker تعمل في خلفية الجهاز الخاص بك. لا يتلقى مدخلات أو عرض الإخراج.
`docker run -d IMAGE
`
```
docker run -d IMAGE
```
إذا قمت بتشغيل حاويات في الخلفية ، يمكنك معرفة التفاصيل الخاصة بها باستخدام `docker ps` توصيل `docker ps` ، ثم إعادة توصيل الجهاز بمدخلات ومخرجاته.

View File

@ -25,9 +25,10 @@ Docker عبارة عن منصة مفتوحة لإنشاء التطبيقات ا
* لينكس:
`curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
`
```
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```
#### معلومات اكثر:

View File

@ -10,40 +10,42 @@ localeTitle: صورة بناء منفصلة
في هذا المثال ، سنستخدم خادمًا بسيطًا لخادم الويب في [Go](https://golang.org/) . التعليمة البرمجية التالية هي مجرد webserver hello world يستمع على المنفذ `8080` .
`package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello world!")
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
`
```go
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello world!")
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
```
### Dockerfile
قد يبدو Dockerfile لهذا الرمز شيء من هذا القبيل
`FROM golang:1.11
ADD . /app
WORKDIR /app
RUN go build -o /myserver .
EXPOSE 8080
CMD [ "/myserver" ]
`
```
FROM golang:1.11
ADD . /app
WORKDIR /app
RUN go build -o /myserver .
EXPOSE 8080
CMD [ "/myserver" ]
```
بناء هذه الصورة ينتج في صورة بحجم 783MB !! باستخدام صورة بهذا الحجم للتطبيق البسيط ، من السهل رؤية كيف يمكن أن يؤدي ذلك إلى إبطاء الأشياء عند النشر.
@ -55,23 +57,24 @@ localeTitle: صورة بناء منفصلة
سيقوم Dockerfile التالي ببناء الثنائي داخل صورة golang ومن ثم بناء صورة جديدة من الصفر ، نسخ الملف الثنائي من الصورة الأولى إلى الثانية.
`FROM golang:1.11 as build
ADD . /app
WORKDIR /app
RUN go build -o /myserver .
FROM scratch
COPY --from=build /myserver /myserver
EXPOSE 8080
CMD [ "myserver" ]
`
```
FROM golang:1.11 as build
ADD . /app
WORKDIR /app
RUN go build -o /myserver .
FROM scratch
COPY --from=build /myserver /myserver
EXPOSE 8080
CMD [ "myserver" ]
```
بناء من هذا dockerfile النتائج في حجم الصورة النهائية من 6.55MB فقط! هذا **أصغر** من **100 مرة** من محاولتنا الأولى ، مما يجعله أسرع 100 مرة في سحب الصورة من التسجيل!

View File

@ -10,53 +10,59 @@ localeTitle: أنواع البيانات
العدد الصحيح هو رقم غير عشري. وقد بنى Elixir دعمًا للأرقام الثنائية ، والثمانية ، والسداسي عشرية كأعداد صحيحة.
`iex> 1337
1337
`
```elixir
iex> 1337
1337
```
### العربات
يتطلب العوم عشريًا ورقمًا واحدًا على الأقل بعد العلامة العشرية. يدعم Floats دقة مزدوجة 64 بت و `e` أجل exponets.
`iex> 27e-100
27e-100
`
```elixir
iex> 27e-100
27e-100
```
### القيم المنطقية
البولية هي قيمة حقيقية أو خاطئة. في الإكسير كل شيء صدق ما عدا `false` ولا `nil` . من المهم ملاحظة أن booleans هي نوع فرعي من ذرات Elxir (يمكنك فحص القيم في IEX لترى بنفسك).
`iex> true
true
iex> false
false
iex> nil
nil
`
```elixir
iex> true
true
iex> false
false
iex> nil
nil
```
### ذرات
تعتبر الذرة قيمة ثابتة هي نفس الاسم. يتم استخدام الذرات بشكل شائع لرسائل الحالة / الأخطاء داخل المجموعة مع المزيد من المعلومات المضمنة في سلسلة.
`iex> {:ok, "Message sent successfully"}
{:ok, "Message sent successfully"}
iex> {:error, "Message failed to send"}
{:error, "Message failed to send"}
`
```elixir
iex> {:ok, "Message sent successfully"}
{:ok, "Message sent successfully"}
iex> {:error, "Message failed to send"}
{:error, "Message failed to send"}
```
### سلاسل
السلسلة UTF-8 مشفرة وملفوفة في علامات اقتباس مزدوجة.
`iex> "freeCodeCamp"
"freeCodeCamp"
`
```elixir
iex> "freeCodeCamp"
"freeCodeCamp"
```
السلسلة هي أيضًا ثنائية ، يمكنك رؤية تمثيل ثنائي لسلسلة في Elixir عن طريق إرفاق `<> <<0>>` بنهاية السلسلة. يمكن أن تمثل السلسلة ثنائيًا ، ويمكن أن يمثل الثنائي أيضًا سلسلة.
`iex> "freeCodeCamp" <> <<0>>
<<102, 114, 101, 101, 67, 111, 100, 101, 67, 97, 109, 112, 0>>
`
```elixir
iex> "freeCodeCamp" <> <<0>>
<<102, 114, 101, 101, 67, 111, 100, 101, 67, 97, 109, 112, 0>>
```
#### معلومات اكثر

View File

@ -10,23 +10,25 @@ localeTitle: كابل بيانات
يستخدم المستند المضمن `#` أمام نص يصف شيئًا عن الشفرة.
`def get(path) do
# This is an inline comment for documentation purposes.
"http get request response"
end
`
```elixir
def get(path) do
# This is an inline comment for documentation purposes.
"http get request response"
end
```
### وثائق الوحدة
يصف مستند الوحدة النمطية الغرض من وحدة نمطية. تشبه Moduledocs التعليقات متعددة الأسطر التي قد تجدها في لغات البرمجة الأخرى.
`defmodule WebServer do
@moduledoc """
Provides a set of functions to accept and respond to HTTP requests.
This module provides the @get/1, @post/1, and @put/1 functions.
"""
end
`
```elixir
defmodule WebServer do
@moduledoc """
Provides a set of functions to accept and respond to HTTP requests.
This module provides the @get/1, @post/1, and @put/1 functions.
"""
end
```
### وثائق الوظيفة

View File

@ -10,9 +10,10 @@ localeTitle: enumerable
باستخدام `Enum.map` يمكنك تشغيل وظيفة مجهولة (وظيفة ليست داخل وحدة نمطية) تمر فوق كل عنصر في قائمة. هذا ينجز نفس المهمة مثل حلقة tradational دون الحاجة إلى تحوير متغير تراكم.
`iex> Enum.map([1, 2, 3], fn(x) -> x * 2 end)
[2, 4, 6]
`
```elixir
iex> Enum.map([1, 2, 3], fn(x) -> x * 2 end)
[2, 4, 6]
```
## طرق في وحدة التعداد
@ -22,9 +23,10 @@ localeTitle: enumerable
يتم تشغيل `Enum.map` وظيفة مجهول أو تم التقاطها عبر قائمة.
`iex> Enum.map([5, 10, 15, 20], fn(x) -> x * 2 end)
[10, 20, 30, 40]
`
```elixir
iex> Enum.map([5, 10, 15, 20], fn(x) -> x * 2 end)
[10, 20, 30, 40]
```
#### معلومات اكثر:

View File

@ -12,17 +12,18 @@ localeTitle: Erlang Term Storage
### ETS Demo في IEX
`iex(1)> myETSTable = :ets.new(:my_ets_table, [])
#Reference<0.1520230345.550371329.65846>
iex(2)> :ets.insert(myETSTable, {"favoriteWebSite", "freeCodeCamp"})
true
iex(3)> :ets.insert(myETSTable, {"favoriteProgrammingLanguage", "Elixir"})
true
iex(4)> :ets.i(myETSTable)
<1 > {<<"favoriteProgrammingLanguage">>,<<"Elixir">>}
<2 > {<<"favoriteWebSite">>,<<"freeCodeCamp">>}
EOT (q)uit (p)Digits (k)ill /Regexp -->
`
```elixir
iex(1)> myETSTable = :ets.new(:my_ets_table, [])
#Reference<0.1520230345.550371329.65846>
iex(2)> :ets.insert(myETSTable, {"favoriteWebSite", "freeCodeCamp"})
true
iex(3)> :ets.insert(myETSTable, {"favoriteProgrammingLanguage", "Elixir"})
true
iex(4)> :ets.i(myETSTable)
<1 > {<<"favoriteProgrammingLanguage">>,<<"Elixir">>}
<2 > {<<"favoriteWebSite">>,<<"freeCodeCamp">>}
EOT (q)uit (p)Digits (k)ill /Regexp -->
```
## إصرار

View File

@ -6,32 +6,35 @@ localeTitle: قوائم
في الإكسير ، القوائم هي هياكل بيانات تتألف من قيم داخل أقواس مربعة. يمكن أن تكون القيم في القائمة أي نوع.
`iex> [1, "string", true]
[1, "string", true]
`
```elixir
iex> [1, "string", true]
[1, "string", true]
```
## ثبات
هياكل البيانات في Elixir غير قابلة للتغيير ، لذا فإن أي عمليات يتم تنفيذها في قائمة ستعيد قائمة جديدة ، تاركة الأصلي سليمة.
`iex> list = [1, "string", true]
[1, "string", true]
iex> list ++ [2]
[1, "string", true, 2]
iex> list
[1, "string", true]
`
```elixir
iex> list = [1, "string", true]
[1, "string", true]
iex> list ++ [2]
[1, "string", true, 2]
iex> list
[1, "string", true]
```
## رؤساء والذيول
يمكن الوصول بسهولة إلى الرأس (العنصر الأول) من القائمة والذيل (القيم المتبقية) مع مشغلي `hd/1` و `tl/1` .
`iex> list = [1, "string", true]
iex> hd(list)
1
iex> tl(list)
["string", true]
`
```elixir
iex> list = [1, "string", true]
iex> hd(list)
1
iex> tl(list)
["string", true]
```
#### معلومات اكثر:

View File

@ -10,37 +10,43 @@ localeTitle: عنقاء
تركيب فينيكس بسيط نسبيًا ، ولكن قبل أن نتمكن من ذلك ، سنحتاج إلى التأكد من أن Elixir ومدير حزمة Hex و Erlang يعملان بالفعل على نظامنا. يحتوي موقع Elixir على [دليل تركيب](https://elixir-lang.org/install.html) رائع لكل من Elixir و Erlang. بمجرد إعداد هذه البرامج بنجاح ، قم ببساطة بتشغيل:
`$ mix local.hex
`
```shell
$ mix local.hex
```
لتثبيت مدير حزمة Hex ، ثم قم بتثبيت تشغيل أرشيف Phoenix:
`$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
`
```shell
$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
```
## إنشاء تطبيق Phoenix:
1. بعد تثبيت تطبيق Phoenix ، يكون إنشاء تطبيق أمرًا بسيطًا:
`$ mix phx.new <application_name>
`
```shell
$ mix phx.new <application_name>
```
2. تشغيل هذا الأمر مع إنشاء بنية دليل وجميع الملفات الأساسية المطلوبة مع اسم _التطبيق_ الذي استخدمته في الأمر السابق. ستتم مطالبتك بعد ذلك بتثبيت اعتماديات أساسية للتطبيق ، لذلك سنقول نعم لذلك.
3. بعد ذلك ، سيُطلب منك التغيير إلى دليل مشروعنا:
`$ cd <application_name>
`
```shell
$ cd <application_name>
```
4. افتراضياً ، يفترض Phoenix أننا سنستخدم PostgreSQL لتطبيقنا مع اسم مستخدم وكلمة مرور لـ 'postgres'. إذا لم يكن الأمر كذلك ، فستحتاج إلى تغيير التكوين - وإلا فكل ما نحتاج إليه هو إنشاء قاعدة البيانات الخاصة بنا:
`$ mix ecto.create
`
```shell
$ mix ecto.create
```
5. أخيرًا ، سنبدأ خادمنا:
`$ mix phx.server
`
```shell
$ mix phx.server
```
6. الآن ، قف في متصفحك وانتقل إلى localhost: 4000 وشاهد صفحة الترحيب! تهانينا ، لقد حصلت على تطبيق Phoenix للعمل.

View File

@ -6,27 +6,30 @@ localeTitle: سلاسل
يتم التفاف سلاسل في الإكسير مع علامات اقتباس مزدوجة ، في حين يتم سرد القوائم الفردية. هم الثنائيات المشفرة UTF-8.
`iex> "Hello world!"
"Hello world!"
`
```elixir
iex> "Hello world!"
"Hello world!"
```
سلسلة الاستيفاء ممكن في الإكسير مع octothorp تليها الأقواس المجعد.
`iex> variable = "world!"
"world!"
iex> "Hello #{variable}"
"Hello world!"
`
```elixir
iex> variable = "world!"
"world!"
iex> "Hello #{variable}"
"Hello world!"
```
تحتوي الوحدة النمطية السلسلة على العديد من الوظائف المضمنة المفيدة استنادًا إلى معيار Unicode.
`iex> example = "string"
"string"
iex> String.capitalize(example)
"String"
iex> String.duplicate(example, 2)
"stringstring"
`
```elixir
iex> example = "string"
"string"
iex> String.capitalize(example)
"String"
iex> String.duplicate(example, 2)
"stringstring"
```
#### معلومات اكثر:

View File

@ -6,23 +6,25 @@ localeTitle: الصفوف
في الإكسير ، الصفوف هي بنية بيانات يمكنها الاحتفاظ بأي قيمة أو خليط من الأنواع. يتم تعريف المجموعات بواسطة الأقواس المتعرجة ، وتبدأ الفهارس الخاصة بها من 0. ولما كانت الصفوف يتم تخزينها بشكل متقارب في الذاكرة ، فإن الحصول على البيانات منها هو عملية سريعة جدًا.
`iex> tuple = {:atom, "string"}
{:atom, "string"}
iex> elem(tuple, 0)
:atom
`
```elixir
iex> tuple = {:atom, "string"}
{:atom, "string"}
iex> elem(tuple, 0)
:atom
```
## ثبات
تعتبر الصفوف في Elixir غير قابلة للتغيير ، لذا فإن إجراء تعديلات سيؤدي إلى ظهور مجموعة جديدة تمامًا - مما يوفر النص الأصلي في الذاكرة.
`iex> tuple = {:atom, "string"}
{:atom, "string"}
iex> put_elem(tuple, 1, true)
{:atom, true}
iex> tuple
{:atom, "string"}
`
```elixir
iex> tuple = {:atom, "string"}
{:atom, "string"}
iex> put_elem(tuple, 1, true)
{:atom, true}
iex> tuple
{:atom, "string"}
```
## نمط مطابقة

View File

@ -16,50 +16,54 @@ Erlang يجعل الاستخدام المكثف من **العودية** . منذ
في ما يلي مثال على العودية ، حيث يوضح كيف تقوم إحدى الدرجات مرارًا بتفكيك الحرف الأول من مقدمة الاسم وطباعته ، ولا تتوقف إلا عند مواجهة الحرف الأخير.
`-module(name).
-export([print_name/1]).
print_name([RemainingLetter | []]) ->
io:format("~c~n", [RemainingLetter]);
print_name([FirstLetter | RestOfName]) ->
io:format("~c~n", [FirstLetter]),
print_name(RestOfName).
`
```erlang
-module(name).
-export([print_name/1]).
print_name([RemainingLetter | []]) ->
io:format("~c~n", [RemainingLetter]);
print_name([FirstLetter | RestOfName]) ->
io:format("~c~n", [FirstLetter]),
print_name(RestOfName).
```
انتاج:
`> name:print_name("Mike").
M
i
k
e
ok
`
```
> name:print_name("Mike").
M
i
k
e
ok
```
وهناك أيضا تركيز كبير على **نمط مطابقة،** التي كثيرا ما يلغي الحاجة ل `if` بنية أو `case` البيان. في المثال التالي ، هناك نوعان من التطابقات لأسماء محددة ، متبوعًا بـ catch-all لأية أسماء أخرى.
`-module(greeting).
-export([say_hello/1]).
say_hello("Mary") ->
"Welcome back Mary!";
say_hello("Tom") ->
"Howdy Tom.";
say_hello(Name) ->
"Hello " ++ Name ++ ".".
`
```erlang
-module(greeting).
-export([say_hello/1]).
say_hello("Mary") ->
"Welcome back Mary!";
say_hello("Tom") ->
"Howdy Tom.";
say_hello(Name) ->
"Hello " ++ Name ++ ".".
```
انتاج:
`> greeting:say_hello("Mary").
"Welcome back Mary!"
> greeting:say_hello("Tom").
"Howdy Tom."
> greeting:say_hello("Beth").
"Hello Beth."
`
```
> greeting:say_hello("Mary").
"Welcome back Mary!"
> greeting:say_hello("Tom").
"Howdy Tom."
> greeting:say_hello("Beth").
"Hello Beth."
```
### حاول

View File

@ -6,25 +6,29 @@ localeTitle: كيفية المصادقة باستخدام GitHub باستخدا
تحقق من عدم وجود ملفات `rsa` هنا قبل المتابعة ، استخدم:
`ls -al ~/.ssh
`
```shell
ls -al ~/.ssh
```
إذا لم يكن هناك ما يتم سرده (على سبيل المثال `: No such file or directory` ) ، فاستخدم:
`mkdir $HOME/.ssh
`
```shell
mkdir $HOME/.ssh
```
إذا لم يكن هناك شيء هناك ، قم بإنشاء keygen جديد مع:
`ssh-keygen -t rsa -b 4096 -C your@email.com
`
```shell
ssh-keygen -t rsa -b 4096 -C your@email.com
```
الآن باستخدام `ls -al ~/.ssh` سوف تظهر لدينا `id_rsa.pub` الملف.
أضف مفتاح SSH إلى وكيل SSH:
`eval "$(ssh-agent -s)" # for mac and Linux from bash
`
```shell
eval "$(ssh-agent -s)" # for mac and Linux from bash
```
``eval `ssh-agent -s`
ssh-agent -s # for Windows
@ -32,20 +36,24 @@ localeTitle: كيفية المصادقة باستخدام GitHub باستخدا
إضافة مفتاح RSA إلى SHH مع:
`ssh-add ~/.ssh/id_rsa
`
```shell
ssh-add ~/.ssh/id_rsa
```
انسخ مفتاحك إلى الحافظة
`clip < ~/.ssh/id_rsa.pub # Windows
`
```shell
clip < ~/.ssh/id_rsa.pub # Windows
```
`cat ~/.ssh/id_rsa.pub # Linux
`
```shell
cat ~/.ssh/id_rsa.pub # Linux
```
انتقل إلى صفحة [إعدادات](https://github.com/settings/keys) GitHub وانقر على زر "New SSH key" في المفتاح الذي تم إنشاؤه.
ثم توثيق مع:
`ssh -T git@github.com
`
```shell
ssh -T git@github.com
```

View File

@ -6,44 +6,50 @@ localeTitle: Git Aliases
لا يقوم Git باستنتاج الأمر تلقائيًا إذا قمت بكتابته جزئيًا. إذا كنت لا تريد كتابة النص الكامل لكل من أوامر Git ، فيمكنك بسهولة إعداد اسم مستعار لكل أمر باستخدام git config. إليك بعض الأمثلة التي قد ترغب في إعدادها:
`$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
`
```shell
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.st status
```
هذا يعني ، على سبيل المثال ، بدلاً من كتابة ارتكاب بوابة ، تحتاج فقط إلى كتابة git ci. أثناء استخدام Git ، ستستخدم على الأرجح الأوامر الأخرى بشكل متكرر أيضًا ؛ لا تتردد في إنشاء أسماء مستعارة جديدة.
يمكن أن تكون هذه التقنية مفيدة جدًا في إنشاء الأوامر التي تعتقد أنها يجب أن تكون موجودة. على سبيل المثال ، لتصحيح مشكلة قابلية الاستخدام التي واجهتها مع unstage ملف ، يمكنك إضافة اسم مستعار unstage الخاصة بك إلى Git:
`$ git config --global alias.unstage 'reset HEAD --'
`
```shell
$ git config --global alias.unstage 'reset HEAD --'
```
هذا يجعل الأمرين التاليين مساويين:
`$ git unstage fileA
$ git reset HEAD fileA
`
```shell
$ git unstage fileA
$ git reset HEAD fileA
```
هذا يبدو أكثر وضوحا بعض الشيء. من الشائع أيضًا إضافة أمر آخر ، على النحو التالي:
`$ git config --global alias.last 'log -1 HEAD'
`
```shell
$ git config --global alias.last 'log -1 HEAD'
```
بهذه الطريقة ، يمكنك أن ترى آخر التزام بسهولة:
`$ git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel <dreamer3@example.com>
Date: Tue Aug 26 19:48:51 2008 +0800
test for current head
Signed-off-by: Scott Chacon <schacon@example.com>
`
```shell
$ git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel <dreamer3@example.com>
Date: Tue Aug 26 19:48:51 2008 +0800
`$ git config --global alias.st status --short --branch
`
test for current head
Signed-off-by: Scott Chacon <schacon@example.com>
```
```shell
$ git config --global alias.st status --short --branch
```
عند تشغيل الأمر `git st` ، سيتم عرض الحالة git بتنسيق مبسط لطيف.
@ -51,8 +57,9 @@ localeTitle: Git Aliases
لعرض جميع الأسماء المستعارة التي قمت بإنشائها على جهازك ، قم بتشغيل الأمر:
`cat ~/.gitconfig
`
```shell
cat ~/.gitconfig
```
سيسمح لك استبدال `cat` باستخدام `nano` بتحريرها أو إزالتها تمامًا.

View File

@ -12,22 +12,25 @@ localeTitle: جيت بيزكت
لبدء جلسة شرائية ، ستقوم بإخبار بوابة git لبدء جلسة عمل ، وتحديد إصدار "سيئ" ، وتحديد إصدار "جيد". بافتراض أن الالتزام الحالي قد تم كسره ولكن التزام `4b60707` جيد ، فسوف يتم تشغيل ما يلي:
`git bisect start
git bisect bad
git bisect good 4b60707
`
```shell
git bisect start
git bisect bad
git bisect good 4b60707
```
سيقوم Git بالتحقق من التزام بين الإصدارات "الجيدة" و "السيئة" وإخراج شيء مثل ما يلي:
`Bisecting: 2 revisions left to test after this (roughly 2 steps)
`
```
Bisecting: 2 revisions left to test after this (roughly 2 steps)
```
يجب عليك الآن أن تخبر git إذا كان الالتزام الحالي يعمل مع `git bisect good` أو إذا تم كسر الالتزام الحالي مع `git bisect bad` . ستتكرر هذه العملية حتى يصبح الأمر قادراً على طباعة أول التزام سيء.
عند الانتهاء ، يجب تنظيف جلسة المشط. سيؤدي ذلك إلى إعادة تعيين HEAD إلى ما كان عليه قبل بدء جلسة العمل:
`git bisect reset
`
```shell
git bisect reset
```
### موارد آخرى

View File

@ -14,10 +14,11 @@ localeTitle: جيت بليم
سترى مخرجات مثل هذا:
`0292b580 (Jane Doe 2018-06-18 00:17:23 -0500 1) 3.times do
e483daf0 (John Doe 2018-06-18 23:50:40 -0500 2) print 'Welcome '
0292b580 (Jane Doe 2018-06-18 00:17:23 -0500 3) end
`
```shell
0292b580 (Jane Doe 2018-06-18 00:17:23 -0500 1) 3.times do
e483daf0 (John Doe 2018-06-18 23:50:40 -0500 2) print 'Welcome '
0292b580 (Jane Doe 2018-06-18 00:17:23 -0500 3) end
```
يتم وضع علامة على كل سطر باستخدام SHA ، واسم المؤلف وتاريخ الالتزام الأخير.

View File

@ -21,13 +21,15 @@ localeTitle: بوابة فرع
لعرض الفروع في مستودع Git ، قم بتشغيل الأمر:
`git branch
`
```shell
git branch
```
لعرض كل من فروع التتبع عن بعد والفروع المحلية ، قم بتشغيل الأمر:
`git branch -a
`
```shell
git branch -a
```
سيكون هناك علامة نجمية (\*) بجوار الفرع الذي تعمل عليه حاليًا.
@ -39,8 +41,9 @@ localeTitle: بوابة فرع
للتحقق من فرع موجود ، قم بتشغيل الأمر:
`git checkout BRANCH-NAME
`
```shell
git checkout BRANCH-NAME
```
بشكل عام ، لن تسمح لك Git بالتسجيل في فرع آخر ما لم يكن دليل عملك نظيفًا ، لأنك ستفقد أي تغييرات في دليل العمل غير ملتزم بها. لديك ثلاثة خيارات للتعامل مع تغييراتك: 1) القمامة لهم (انظر [بوابة الخروج للحصول على التفاصيل](https://guide.freecodecamp.org/git/git-checkout/) ) أو 2) ارتكابها (انظر [Git ارتكاب التفاصيل](https://guide.freecodecamp.org/git/git-commit/) ) أو 3) خبأهم (انظر [خبأ Git لمزيد من التفاصيل](https://guide.freecodecamp.org/git/git-stash/) ).
@ -48,20 +51,22 @@ localeTitle: بوابة فرع
لإنشاء فرع جديد ، قم بتشغيل الأمر:
`git branch NEW-BRANCH-NAME
`
```shell
git branch NEW-BRANCH-NAME
```
لاحظ أن هذا الأمر يقوم بإنشاء الفرع الجديد فقط. ستحتاج إلى تشغيل `git checkout NEW-BRANCH-NAME` للتبديل إليه.
هناك اختصار لإنشاء واختبار فرع جديد في وقت واحد. يمكنك تمرير الخيار `-b` (للفرع) مع `git checkout` . الأوامر التالية تفعل الشيء نفسه:
`# Two-step method
git branch NEW-BRANCH-NAME
git checkout NEW-BRANCH-NAME
# Shortcut
git checkout -b NEW-BRANCH-NAME
`
```shell
# Two-step method
git branch NEW-BRANCH-NAME
git checkout NEW-BRANCH-NAME
# Shortcut
git checkout -b NEW-BRANCH-NAME
```
عندما تنشئ فرعًا جديدًا ، سيتضمن كل الإلتزامات من الفرع الرئيسي. الفرع الأم هو الفرع الذي تتواجد فيه عندما تقوم بإنشاء الفرع الجديد.
@ -69,37 +74,41 @@ localeTitle: بوابة فرع
لإعادة تسمية فرع ، قم بتشغيل الأمر:
`git branch -m OLD-BRANCH-NAME NEW-BRANCH-NAME
# Alternative
git branch --move OLD-BRANCH-NAME NEW-BRANCH-NAME
`
```shell
git branch -m OLD-BRANCH-NAME NEW-BRANCH-NAME
# Alternative
git branch --move OLD-BRANCH-NAME NEW-BRANCH-NAME
```
### حذف فرع
لن تسمح لك Git بحذف فرع أنت موجود حاليًا. يجب عليك أولاً الخروج من فرع مختلف ، ثم تشغيل الأمر:
`git branch -d BRANCH-TO-DELETE
# Alternative:
git branch --delete BRANCH-TO-DELETE
`
```shell
git branch -d BRANCH-TO-DELETE
# Alternative:
git branch --delete BRANCH-TO-DELETE
```
الفرع الذي تقوم بالتبديل إلى إحداث فرق. سيطرح Git خطأً إذا لم يتم دمج التغييرات في الفرع الذي تحاول حذفه بالكامل في الفرع الحالي. يمكنك تجاوز هذا والقوة بوابة لحذف فرع مع `-D` الخيار (لاحظ حرف) أو باستخدام `--force` الخيار مع `-d` أو `--delete` :
`git branch -D BRANCH-TO-DELETE
# Alternatives
git branch -d --force BRANCH-TO-DELETE
git branch --delete --force BRANCH-TO-DELETE
`
```shell
git branch -D BRANCH-TO-DELETE
# Alternatives
git branch -d --force BRANCH-TO-DELETE
git branch --delete --force BRANCH-TO-DELETE
```
### قارن الفروع
يمكنك مقارنة الفروع باستخدام الأمر `git diff` :
`git diff FIRST-BRANCH..SECOND-BRANCH
`
```shell
git diff FIRST-BRANCH..SECOND-BRANCH
```
سترى الإخراج الملون للتغييرات بين الفروع. بالنسبة إلى جميع الأسطر التي تغيرت ، سيكون إصدار `SECOND-BRANCH` خطًا أخضر يبدأ بـ "+" ، وسيكون إصدار `FIRST-BRANCH` خطًا أحمر يبدأ بـ "-". إذا كنت لا ترغب في أن يقوم Git بعرض سطرين لكل تغيير ، فيمكنك استخدام الخيار `--color-words` . بدلاً من ذلك ، سيعرض Git سطرًا واحدًا مع النص المحذوف باللون الأحمر ، وإضافة النص باللون الأخضر.
@ -109,10 +118,11 @@ localeTitle: بوابة فرع
إذا كنت قد نسيت كيفية استخدام أحد الخيارات أو تريد استكشاف وظائف أخرى حول الأمر `git branch` ، فيمكنك تشغيل أي من هذه الأوامر:
`git help branch
git branch --help
man git-branch
`
```shell
git help branch
git branch --help
man git-branch
```
### معلومات اكثر:

View File

@ -10,20 +10,23 @@ localeTitle: بوابة الخروج
للخروج من التزام معين ، قم بتشغيل الأمر:
`git checkout specific-commit-id
`
```shell
git checkout specific-commit-id
```
يمكننا الحصول على رقم تعريف الالتزام المحدد عن طريق تشغيل:
`git log
`
```shell
git log
```
### الخروج فرع موجود
للتحقق من فرع موجود ، قم بتشغيل الأمر:
`git checkout BRANCH-NAME
`
```shell
git checkout BRANCH-NAME
```
بشكل عام ، لن تسمح لك Git بالتسجيل في فرع آخر ما لم يكن دليل عملك نظيفًا ، لأنك ستفقد أي تغييرات في دليل العمل غير ملتزم بها. لديك ثلاثة خيارات للتعامل مع تغييراتك: 1) قم بسحبها ، 2) [ارتكابها](https://guide.freecodecamp.org/git/git-commit/) ، أو 3) [خبأتها](https://guide.freecodecamp.org/git/git-stash/) .
@ -31,8 +34,9 @@ localeTitle: بوابة الخروج
لإنشاء فرع جديد بأمر واحد والخروج منه ، يمكنك استخدام:
`git checkout -b NEW-BRANCH-NAME
`
```shell
git checkout -b NEW-BRANCH-NAME
```
سيؤدي هذا إلى تبديلك تلقائيًا إلى الفرع الجديد.
@ -40,8 +44,9 @@ localeTitle: بوابة الخروج
يشبه الأمر التالي التحقق من فرع جديد ، ولكنه يستخدم علامة `-B` (لاحظ علامة captional B) ومعلمة `START-POINT` اختيارية:
`git checkout -B BRANCH-NAME START-POINT
`
```shell
git checkout -B BRANCH-NAME START-POINT
```
إذا كان `BRANCH-NAME` غير موجود ، فسيقوم Git بإنشائه وبدء تشغيله عند `START-POINT` . إذا كان `BRANCH-NAME` موجودًا بالفعل ، فعندئذٍ يقوم Git بإعادة تعيين الفرع إلى `START-POINT` . هذا يعادل تشغيل `git branch` مع `-f` .
@ -51,15 +56,17 @@ localeTitle: بوابة الخروج
عند تشغيل الأمر التالي ، سيتجاهل Git الإدخالات غير المدمجة:
`git checkout -f BRANCH-NAME
# Alternative
git checkout --force BRANCH-NAME
`
```shell
git checkout -f BRANCH-NAME
# Alternative
git checkout --force BRANCH-NAME
```
### التراجع عن التغييرات في دليل العمل الخاص بك
يمكنك استخدام أمر `git checkout` للتراجع عن التغييرات التي أجريتها على ملف في دليل العمل. سيؤدي هذا إلى إعادة الملف إلى الإصدار في `HEAD` :
`git checkout -- FILE-NAME
`
```shell
git checkout -- FILE-NAME
```

View File

@ -10,15 +10,17 @@ localeTitle: Git Cherry Pick
لتطبيق التغيير الذي تم تقديمه بواسطة الالتزام على طرف الفرع الرئيسي وإنشاء التزام جديد بهذا التغيير. قم بتشغيل الأمر التالي
`git cherry-pick master
`
```shell
git cherry-pick master
```
### تحقق في تغيير من التزام مختلف
لتطبيق التغيير الذي تم تقديمه بواسطة الالتزام في قيمة التجزئة المحددة التي تريدها ، قم بتشغيل الأمر التالي
`git cherry-pick {HASHVALUE}
`
```shell
git cherry-pick {HASHVALUE}
```
سيؤدي هذا إلى إضافة التغييرات التي تمت الإشارة إليها في الالتزام ، إلى المستودع الحالي الخاص بك
@ -26,16 +28,19 @@ localeTitle: Git Cherry Pick
يسمح لك `cherry-pick` بالاختيار بين عمليات من فرع واحد إلى آخر. دعونا نقول لديك فرعين `master` و `develop-1` . في الفرع `develop-1` لديك 3 تلتزم مع تعهدات التزام `commit-1` ، `commit-2` `commit-3` . هنا يمكنك تطبيق `commit-2` على الفرع `master` خلال:
`git checkout master
git cherry-pick commit-2
`
```shell
git checkout master
git cherry-pick commit-2
```
إذا واجهت أي تعارضات في هذه المرحلة ، فيجب عليك إصلاحها وإضافتها باستخدام `git add` ، ثم يمكنك استخدام علامة متابعة لتطبيق اختيار cherry-pick.
`git cherry-pick --continue
`
```shell
git cherry-pick --continue
```
إذا كنت ترغب في إجهاض اختيار الكرز فيما بين يمكنك استخدام علامة abort:
`git cherry-pick --abort
`
```shell
git cherry-pick --abort
```

View File

@ -10,13 +10,15 @@ localeTitle: جيت استنس
في سطر الأوامر على جهازك المحلي ، انتقل إلى المكان الذي تريد حفظ المشروع في دليل العمل الخاص بك. وأخيرًا ، قم بتشغيل الأمر `git clone` :
`git clone URL-OF-REPOSITORY
`
```shell
git clone URL-OF-REPOSITORY
```
الاسم الافتراضي للدليل الجديد على جهاز الكمبيوتر الخاص بك هو اسم المستودع ، ولكن يمكنك تغيير ذلك عن طريق تضمين المعلمة (اختياري) الأخيرة:
`git clone URL-OF-REPOSITORY NAME-OF-DIRECTORY-ON-COMPUTER
`
```shell
git clone URL-OF-REPOSITORY NAME-OF-DIRECTORY-ON-COMPUTER
```
يعطي Git البعيد الاسم المستعار "الأصل". هذه طريقة مفيدة للإشارة إلى جهاز التحكم عن بعد عندما تريد دفع تغييراتك إلى الخادم البعيد أو سحب التغييرات منه. انظر [Git push](https://guide.freecodecamp.org/git/git-push/) و [Git pull](https://guide.freecodecamp.org/git/git-pull/) لمزيد من التفاصيل.
@ -24,12 +26,13 @@ Git يسحب فقط الفرع الرئيسي عن بعد على جهاز الك
أيضا ، Git تلقائيا بإعداد الفرع الرئيسي المحلي لتتبع الفرع البعيد. عند تشغيل `git status` ، سترى معلومات حول ما إذا كان الفرع المحلي لديك محدثًا مع جهاز التحكم عن بُعد. إليك مثال على الناتج:
`myCommandPrompt (master) >> git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
myCommandPrompt (master) >>
`
```shell
myCommandPrompt (master) >> git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
myCommandPrompt (master) >>
```
إذا كان فرعك المحلي `master` يحتوي على ثلاث تعهدات لم تقم بدفعها إلى الخادم البعيد بعد ، فإن الحالة ستقول "الفرع الخاص بك متقدم على" الأصل / الرئيسي "بـ 3 مرات."
@ -37,13 +40,15 @@ Git يسحب فقط الفرع الرئيسي عن بعد على جهاز الك
إذا كنت ترغب في استضافة مرآة لمستودع ، فيمكنك استخدام معلمة mirror.
`git clone URL-OF-REPOSITORY --mirror
`
```shell
git clone URL-OF-REPOSITORY --mirror
```
بعد إجراء نسخ متطابق لمستودع ، يمكنك استنساخ المرآة المحلية من الخادم الخاص بك.
`git clone NAME-OF-DIRECTORY-ON-COMPUTER
`
```shell
git clone NAME-OF-DIRECTORY-ON-COMPUTER
```
### معلومات اكثر:

View File

@ -21,8 +21,9 @@ localeTitle: جايت كومت
مثال على كيفية استخدام الخيار `-m` :
`git commit -m "My message"
`
```shell
git commit -m "My message"
```
يجب أن يبدو الإخراج في المحطة الطرفية كالتالي:
@ -42,8 +43,9 @@ localeTitle: جايت كومت
مثال على كيفية استخدام الخيار `-a` :
`git commit -am “My new changes”
`
```shell
git commit -am “My new changes”
```
يجب أن يبدو الإخراج في المحطة الطرفية كالتالي:
@ -67,18 +69,20 @@ localeTitle: جايت كومت
يتيح لك خيار `--amend` تغيير `--amend` الأخير. لنفترض أنك ارتكبت للتو وأنك ارتكبت خطأ في رسالة سجل الالتزام. يمكنك تعديل أحدث الالتزام باستخدام الأمر:
`git commit --amend -m "an updated commit message"
`
```shell
git commit --amend -m "an updated commit message"
```
إذا نسيت تضمين ملف في الالتزام:
`git add FORGOTTEN-FILE-NAME
git commit --amend -m "an updated commit message"
# If you don't need to change the commit message, use the --no-edit option
git add FORGOTTEN-FILE-NAME
git commit --amend --no-edit
`
```shell
git add FORGOTTEN-FILE-NAME
git commit --amend -m "an updated commit message"
# If you don't need to change the commit message, use the --no-edit option
git add FORGOTTEN-FILE-NAME
git commit --amend --no-edit
```
تحدث الإلتزامات السابقة لأوانها طوال الوقت في سياق تطورك اليومي. من السهل نسيان تقديم ملف أو كيفية تنسيق رسالة الالتزام الخاصة بك بشكل صحيح. يعد علم `--amend` طريقة ملائمة لإصلاح هذه الأخطاء الصغيرة. سيحل هذا الأمر محل رسالة الالتزام القديمة مع الرسالة المحدثة المحددة في الأمر.
@ -86,8 +90,9 @@ localeTitle: جايت كومت
باستخدام `--amend` ، أحد `--amend` المفيدة التي يمكنك استخدامها هو `--author` والذي يمكنك من تغيير مؤلف آخر التزام قمت به. تخيل موقفًا لم تقم بإعداد اسمك أو بريدك الإلكتروني بشكل صحيح في تكوينات git ولكنك ارتكبت بالفعل التزامًا. مع العلم `--author` يمكنك ببساطة تغييرها دون إعادة التعيين الأخير.
`git commit --amend --author="John Doe <johndoe@email.com>"
`
```
git commit --amend --author="John Doe <johndoe@email.com>"
```
#### الخيار -v أو --verbose

View File

@ -8,34 +8,39 @@ localeTitle: جيت ميرج
بناء جملة الأمر كما يلي:
`git merge BRANCH-NAME
`
```shell
git merge BRANCH-NAME
```
على سبيل المثال ، إذا كنت تعمل حاليًا في فرع باسم `dev` وترغب في دمج أي تغييرات جديدة تم إجراؤها في فرع باسم `new-features` ، فستقوم بإصدار الأمر التالي:
`git merge new-features
`
```shell
git merge new-features
```
**يرجى ملاحظة:** إذا كانت هناك أي تغييرات غير ملزمة على فرعك الحالي ، فلن تسمح لك Git بالدمج حتى يتم الالتزام بكافة التغييرات في الفرع الحالي. للتعامل مع هذه التغييرات ، يمكنك إما:
* إنشاء فرع جديد وإلزام التغييرات
`git checkout -b new-branch-name
git add .
git commit -m "<your commit message>"
`
```shell
git checkout -b new-branch-name
git add .
git commit -m "<your commit message>"
```
* خبأهم
`git stash # add them to the stash
git merge new-features # do your merge
git stash pop # get the changes back into your working tree
`
```shell
git stash # add them to the stash
git merge new-features # do your merge
git stash pop # get the changes back into your working tree
```
* التخلي عن كل شيء
`git reset --hard # removes all pending changes
`
```shell
git reset --hard # removes all pending changes
```
## دمج الصراع

View File

@ -15,12 +15,13 @@ localeTitle: بوابة سحب
بناء جملة هذا الأمر هو كما يلي:
`# General format
git pull OPTIONS REPOSITORY REFSPEC
# Pull from specific branch
git pull REMOTE-NAME BRANCH-NAME
`
```shell
# General format
git pull OPTIONS REPOSITORY REFSPEC
# Pull from specific branch
git pull REMOTE-NAME BRANCH-NAME
```
بحيث:

View File

@ -10,8 +10,9 @@ localeTitle: Git Push
بناء جملة هذا الأمر هو كما يلي:
`git push <repo name> <branch name>
`
```bash
git push <repo name> <branch name>
```
هناك عدد من الخيارات المختلفة التي يمكنك تمريرها باستخدام الأمر ، يمكنك معرفة المزيد عنها في [وثائق Git](https://git-scm.com/docs/git-push#_options_a_id_options_a) أو تشغيل `git push --help` .
@ -38,8 +39,9 @@ localeTitle: Git Push
إذا كنت ترغب في دفع جميع التغييرات الخاصة بك إلى مستودع بعيد وجميع الفروع في ذلك ، يمكنك استخدام:
`git push --all <REMOTE-NAME>
`
```bash
git push --all <REMOTE-NAME>
```
بحيث:
@ -50,8 +52,9 @@ localeTitle: Git Push
إذا كنت ترغب في تجاهل التغييرات المحلية التي تم إجراؤها على مستودع Git في GitHub (الذي يفعله معظم المطورين للحصول على إصلاح سريع لخادم التطوير) ، يمكنك استخدام الأمر -force للدفع عن طريق تجاهل تلك التغييرات.
`git push --force <REMOTE-NAME> <BRANCH-NAME>
`
```bash
git push --force <REMOTE-NAME> <BRANCH-NAME>
```
بحيث:
@ -62,8 +65,9 @@ localeTitle: Git Push
افتراضيا ستطلق `git push` مفتاح `--verify` . وهذا يعني أن بوابة git ستنفذ أي برنامج نصي مسبق الدفع من جانب العميل قد يكون تم تكوينه. إذا فشلت النصوص التمهيدية ، فستدفع البوابة. (الخطافات مسبقة الدفع هي جيدة للقيام بأشياء مثل ، والتحقق مما إذا كانت رسائل الالتزام تؤكد معايير الشركة ، أو تشغيل اختبارات الوحدة ، الخ ...). قد ترغب أحيانًا في تجاهل هذا السلوك الافتراضي ، على سبيل المثال في السيناريو الذي ترغب فيه في دفع تغييراتك إلى فرع ميزة لمساهم آخر لسحبه ، ولكن تغييرات عملك في التقدم تخترق اختبارات الوحدة. لتجاهل الخطاف ، ما عليك سوى إدخال أمر الدفع وإضافة العلامة `--no-verify`
`git push --no-verify
`
```bash
git push --no-verify
```
### معلومات اكثر:

View File

@ -40,31 +40,32 @@ localeTitle: الذهاب Rebase
* في vim ، اضغط على `esc` ، ثم `i` لبدء تحرير الاختبار.
* على الجانب الأيسر يمكنك الكتابة فوق `pick` واحد من الأوامر أدناه. إذا كنت تريد إسقاط التزام في السابق وتجاهل رسالة الالتزام ، أدخل `f` في مكان `pick` الالتزام.
`pick 452b159 <message for this commit>
pick 7fd4192 <message for this commit>
pick c1af3e5 <message for this commit>
pick 5f5e8d3 <message for this commit>
pick 5186a9f <message for this commit>
# Rebase 0617e63..5186a9f onto 0617e63 (30 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
`
```
pick 452b159 <message for this commit>
pick 7fd4192 <message for this commit>
pick c1af3e5 <message for this commit>
pick 5f5e8d3 <message for this commit>
pick 5186a9f <message for this commit>
# Rebase 0617e63..5186a9f onto 0617e63 (30 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
```
* أدخل `esc` متبوعة `:wq` .
* إذا تم إعادة تعيينها بنجاح ، فستحتاج إلى فرض التغييرات على `git push -f` باستخدام `git push -f` لإضافة الإصدار المعاد توجيهه إلى repub github.

View File

@ -14,8 +14,9 @@ localeTitle: غيت عن بعد
### قائمة جميع مستودعات بعيد تكوينها
`git remote -v
`
```bash
git remote -v
```
يسرد هذا الأمر جميع المستودعات البعيدة بجانب موقعها.
@ -27,34 +28,39 @@ localeTitle: غيت عن بعد
لإضافة مستودع تخزين عن بعد إلى مشروعك ، يمكنك تشغيل الأمر التالي:
`git remote add REMOTE-NAME REMOTE-URL
`
```bash
git remote add REMOTE-NAME REMOTE-URL
```
يمكن أن يكون `REMOTE-URL` إما HTTPS أو SSH. يمكنك العثور على عنوان URL على GitHub بالنقر على القائمة المنسدلة "نسخ أو تنزيل" في المستودع.
على سبيل المثال ، إذا كنت ترغب في إضافة مستودع تخزين بعيد ووصفه `example` ، فيمكنك تشغيل:
`git remote add example https://example.org/my-repo.git
`
```bash
git remote add example https://example.org/my-repo.git
```
### تحديث عنوان URL بعيد
إذا تغير عنوان URL لمستودع تخزين عن بعد ، فيمكنك تحديثه باستخدام الأمر التالي ، حيث `example` هو اسم جهاز التحكم عن بعد:
`git remote set-url example https://example.org/my-new-repo.git
`
```bash
git remote set-url example https://example.org/my-new-repo.git
```
### حذف أجهزة التحكم عن بعد
يتم حذف أجهزة التحكم عن بعد مثل:
`git remote rm REMOTE-NAME
`
```bash
git remote rm REMOTE-NAME
```
يمكنك التأكد من اختفاء جهاز التحكم عن بعد من خلال عرض قائمة أجهزة التحكم عن بعد الموجودة لديك:
`git remote -v
`
```bash
git remote -v
```
### معلومات اكثر:

View File

@ -10,15 +10,17 @@ localeTitle: غيت ريسيت
يتيح لك الأمر التالي اختيار أجزاء من المحتوى بشكل انتقائي والعودة أو إلغاء تثبيتها.
`git reset (--patch | -p) [tree-ish] [--] [paths]
`
```shell
git reset (--patch | -p) [tree-ish] [--] [paths]
```
### قم بإلغاء تثبيت ملف
إذا قمت بنقل ملف إلى منطقة التدريج مع `git add` ، ولكن لم تعد ترغب في أن يكون جزءًا من التزام ، يمكنك استخدام `git reset` لإلغاء تثبيت هذا الملف:
`git reset HEAD FILE-TO-UNSTAGE
`
```shell
git reset HEAD FILE-TO-UNSTAGE
```
ستظل التغييرات التي أجريتها في الملف ، وهذا الأمر يزيل فقط هذا الملف من منطقة التدريج الخاصة بك.
@ -26,8 +28,9 @@ localeTitle: غيت ريسيت
يقوم الأمر التالي بإعادة تعيين HEAD الفرع الحالي الخاص بك إلى `COMMIT` المعطى ويقوم بتحديث الفهرس. إنها ترجع بشكل أساسي حالة فرعك ، ثم تلتزم جميعًا بالتقدم في الكتابة على أي شيء جاء بعد نقطة إعادة التعيين. إذا حذفت الدالة `MODE` ، `--mixed` الافتراضي لها - `--mixed` :
`git reset MODE COMMIT
`
```shell
git reset MODE COMMIT
```
الخيارات الخاصة بـ `MODE` هي:

View File

@ -9,8 +9,9 @@ localeTitle: Git Show
بناء جملة هذا الأمر هو كما يلي:
`git show [<options>] [<object>…​]
`
```bash
git show [<options>] [<object>…​]
```
لكائنات مختلفة بوابة `git show` يعطي مخرجات مختلفة.
@ -21,8 +22,9 @@ localeTitle: Git Show
الاستخدام الأكثر شيوعًا لـ `git show` سيكون بالاشتراك مع كائن git commit
`git show 3357d63
`
```bash
git show 3357d63
```
ستحصل على إنتاج مشابه لـ ،