Skip to content

Embedded Linux course repository

Notifications You must be signed in to change notification settings

kpi-keoa/kpi-embedded-linux-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния ΠΈ сдачи Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚

Π­Ρ‚Π°ΠΏΡ‹

Π‘Π΄Π°Ρ‡Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Π²Π° этапа: Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π°.

  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ΄Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ создания Pull Request Π² этом Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (ΠΏΡ€Π°Π²ΠΈΠ»Π° оформлСния ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅), Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° происходит Π·Π°ΠΎΡ‡Π½ΠΎ ΠΏΠΎ установлСнному Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π±Π΅Π· участия студСнта. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Pull Request ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° выявлСнныС нСдостатки Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ (Ссли Ρ‚Π°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ) ΠΈ прСдоставляСт студСнту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΡŒ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅. ПослС ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ оставляСт Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ выполнСния поставлСнного задания ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ работоспособности ΠΈ коррСктности ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² "Π²ΠΆΠΈΠ²ΡƒΡŽ" Π²ΠΎ врСмя Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… занятий, с Π΄Π°Ρ‡Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы прСподаватСля.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ оцСнивания

  • РСйтинговая систСма оцСнивания (РБО):

    Π‘ΠΈΠΌΠ²ΠΎΠ»

    Π‘Π°Π»Π»ΠΎΠ²

    ОписаниС

    Q R

    60

    Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠ²Ρ‹ΠΉ Π±Π°Π»Π»

    Q E

    40

    баллов за экзамСн

    Q B

    10

    бонусных Π±Π°Π»Π»ΠΎΠ²

  • Π Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠ²Ρ‹ΠΉ Π±Π°Π»Π» (Q R), Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, состоит ΠΈΠ·

    Π‘ΠΈΠΌΠ²ΠΎΠ»

    Π‘Π°Π»Π»ΠΎΠ²

    ОписаниС

    Q Rlab

    40

    Π±Π°Π»Π»ΠΎΠ² Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ…

    Q Rtst

    5 + 5

    Π±Π°Π»Π»ΠΎΠ² Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… МКР

    Q Ratt

    10

    Π±Π°Π»Π»ΠΎΠ² Π·Π° посСщСниС занятий (Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ…)

  • УсловиСм допуска ΠΊ экзамСну являСтся:

    • ВсС Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹;
    • Написаны всС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹;
    • Π‘ΡƒΠΌΠΌΠ°Ρ€Π½Ρ‹ΠΉ Π½Π°Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 40 Π±Π°Π»Π»ΠΎΠ².
  • УсловиС ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ сдачи экзамСна (Ρ‚Π°ΠΊΠΆΠ΅ извСстно ΠΊΠ°ΠΊ "Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚"):

    • ВсС Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹;
    • Написаны всС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹;
    • Π‘ΡƒΠΌΠΌΠ°Ρ€Π½Ρ‹ΠΉ Π½Π°Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 40 Π±Π°Π»Π»ΠΎΠ²;
    • Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 3Ρ… ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… занятий;
    • Π‘ΡƒΠΌΠΌΠ°Ρ€Π½Ρ‹ΠΉ Π±Π°Π»Π» Π·Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 40% ΠΎΡ‚ максимального.
  • УпрощСнная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° сдачи экзамСна ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ рассчСт Π±Π°Π»Π»ΠΎΠ² Π·Π° экзамСн ΠΊΠ°ΠΊ Q E = Q Rlab (Π±Π°Π»Π»Ρ‹ Π·Π° экзамСн ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊ Π±Π°Π»Π»Π°ΠΌ Π·Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅). Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎ собствСнному ТСланию.

  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎ шкалС ΠΎΡ‚ 0 Π΄ΠΎ 5 Π±Π°Π»Π»ΠΎΠ²;

  • Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ опрСдСляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

    R_{LAB} = K_{LAB} \cdot (\frac{5}{40} \cdot N_f + \frac{3}{40} \cdot N_s)

    Π³Π΄Π΅ R LAB β€” ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΎΠ²Ρ‹ΠΉ Π±Π°Π»Π» Π·Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ; K LAB β€” коэффициСнт ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (фиксированный, Π² соотвСтствии с РБО); N f β€” ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΎΡ‚ 0 Π΄ΠΎ 5; N s β€” ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΎΡ‚ 0 Π΄ΠΎ 5.

  • Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вносит наибольший Π²ΠΊΠ»Π°Π΄ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π±Π°Π»Π»

  • Максимальная ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ составляСт:

    • 5 Π±Π°Π»Π»ΠΎΠ² β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ ΠΏΠΎΠ΄Π°Π½Π° ΠΊ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π±Π΅Π· ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ;
    • 4 Π±Π°Π»Π»Π° β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ ΠΏΠΎΠ΄Π°Π½Π° ΠΊ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ с ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° ΠΎΠ΄Π½Ρƒ нСдСлю;
    • 3 Π±Π°Π»Π»Π° β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ ΠΏΠΎΠ΄Π°Π½Π° ΠΊ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ с ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄Π½Ρƒ нСдСлю.
  • Максимальная ΠΎΡ†Π΅Π½ΠΊΠ° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ составляСт:

    • 5 Π±Π°Π»Π»ΠΎΠ² β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° воврСмя, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎ врСмя Π·Π°Ρ‰ΠΈΡ‚Ρ‹ студСнт дСмонстрируСт Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ тСорСтичСским ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ, высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ², творчСский ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ задания Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопросы прСподаватСля;
    • 4 Π±Π°Π»Π»Π° β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° с ΠΎΠΏΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΠΎΠ΄Π½Ρƒ нСдСлю, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎ врСмя Π·Π°Ρ‰ΠΈΡ‚Ρ‹ студСнт дСмонстрируСт Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ тСорСтичСским ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ, высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ², ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопросы прСподаватСля;
    • 3 Π±Π°Π»Π»Π° β€” Ссли лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° воврСмя, Π²ΠΎ врСмя Π·Π°Ρ‰ΠΈΡ‚Ρ‹ студСнт дСмонстрируСт Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ тСорСтичСским ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ ΠΈ практичСскими Π½Π°Π²Ρ‹ΠΊΠ°ΠΌΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅, достаточном для выполнСния задания Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° вопросы прСподаватСля с Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ нСточностями ΠΈΠ»ΠΈ лабораторная Ρ€Π°Π±ΠΎΡ‚Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π° с ΠΎΠΏΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄Π½Ρƒ нСдСлю;
    • 1.5 Π±Π°Π»Π»Π° β€” Π²ΠΎ врСмя Π·Π°Ρ‰ΠΈΡ‚Ρ‹ студСнт дСмонстрируСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопросы прСподаватСля;
    • 0 Π±Π°Π»Π»ΠΎΠ² β€” Ссли Π² процСссС Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ студСнт продСмонстрировал Π²ΠΎΠΏΠΈΡŽΡ‰Π΅Π΅ Π½Π΅Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ ΠΈ Π²Ρ‹Ρ€Π°Π·ΠΈΠ» Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΡΠ΄Π°Π²Π°Ρ‚ΡŒ Π΅Π΅ Π² дальнСйшСм (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, послС Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ тСорСтичСской ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌ Π½Π° вопросы).

Π“Ρ€Π°Ρ„ΠΈΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

ΠŸΠΎΠ΄Π°Π½Π½Ρ‹Π΅ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π² соотвСтствии с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ:

Π“Ρ€Π°Ρ„ΠΈΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Pull Request Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚
КаТдая суббота, Π΄ΠΎ 16:00 ΠΏΠΎ киСвскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ понСдСльник, Π΄ΠΎ 17:00 ΠΏΠΎ киСвскому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΡƒΠ²Π°ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ β€” Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ врСмя, ΠΏΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ согласованию с ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π΅ ΠΏΠΎΠ·ΠΆΠ΅, Ρ‡Π΅ΠΌ Π·Π° нСдСлю

ΠŸΠΎΠ΄Π°Π½Π½Ρ‹Π΅ Pull Request Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ нСпосрСдствСнно Π½Π° Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΌ занятии. Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ прСдоставляСтся студСнтам, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰ΠΈΠΌ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Pull Request ΠΊΡ€ΠΎΠΏΠΎΡ‚Π»ΠΈΠ²Π° ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ порядка 10..30 ΠΌΠΈΠ½ΡƒΡ‚.

ΠŸΠΎΠ΄Π°Π½Π½Ρ‹Π΅ Π²Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ‹ΡˆΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Pull Request, Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° занятии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ ΠΏΠΎΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ воврСмя Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ, поэтому Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся Π·Π°Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎ послСднСго.

Π˜Ρ‚ΠΎΠ³ΠΈ β€” Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ порядок выполнСния ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚

На основании Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ привСсти Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий:

  1. Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ выполняСтся Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ для студСнта врСмя ΠΈ Pull Request подаСтся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π΄ΠΎ субботы 16:00;
  2. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ провСряСт Pull Request, ΠΈ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ нСдостатков Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ, студСнт ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² понСдСльник 17:00;
  3. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΌ занятии студСнт Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΈ приступаСт ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ вопросов β€” ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ сразу ΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚

ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с вопросами

ΠšΡƒΡ€Ρ прСдусматриваСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΉ. ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΈ проводятся Π² ΠΎΠ½Π»Π°ΠΉΠ½-Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ использованиСм мСссСндТСров Telegram ΠΈ Skype (ΠΈΠ»ΠΈ Π² ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ согласованию Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ провСдСния с ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ).

РСкомСндуСтся Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы Π² Telegram-Π³Ρ€ΡƒΠΏΠΏΡƒ курса. Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопросы Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΡ‡Π½Ρ‹Ρ… сообщСний Π² Telegram ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ (@thodnev) Π½Π΅ рСкомСндуСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это прСпятствуСт Ρ€Π°ΡΡΠΏΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ срСди студСнтов.

ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ оставляСт Π·Π° собой ΠΏΡ€Π°Π²ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния Π² Telegram, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° ΠΏΡ€ΠΎΡΡŒΠ±Π° ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² ΠΎΠ±Ρ‰ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ с Ρ†Π΅Π»ΡŒΡŽ обСспСчСния максимального ΠΎΡ…Π²Π°Ρ‚Π° Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Telegram. Вопросы, содСрТащиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½ΠΎΠ³ΠΎ тСкста Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒΡΡ Π±Π΅Π· объяснСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½.

ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ оставляСт Π·Π° собой ΠΏΡ€Π°Π²ΠΎ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° вопросы Π² Telegram Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя. ВрСмя, удСляСмоС ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌ Π½Π° вопросы Π² Telegram составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 1.5 часа Π² нСдСлю Π² срСднСм.

По ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ согласованию Π»ΠΈΡ‡Π½Ρ‹ΠΌ сообщСниСм Π² Telegram, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Skype-сСссию видСосвязи β€” умСстно Π² случаС вопросов, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… дСмонстрации экрана ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… вопросов, для ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ срСдств Teleram нСдостаточно.

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎ Markdown-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² Telegram
normal text normal text
**bold text** bold text
__italic text__ italic text
~~strikethrough text~~ strikethrough text
some `inline code` part some inline code part
```multi
line
code
```
multi
line
code

ВрСбования ΠΊ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°

ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» оформлСния ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ всС описано Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ Coding Style ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’ случаС ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠΉ, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Бписок ΠΏΡ€Π°Π²ΠΈΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅

  1. Максимальная Π΄Π»ΠΈΠ½Π° строки Ρ€Π°Π²Π½Π°:

    1. 80 символов для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра ΠΈ всСго, Ρ‡Ρ‚ΠΎ относится ΠΊ Π΄Π΅Ρ€Π΅Π²Ρƒ исходников ядра
    2. 99 символов для всСго, Ρ‡Ρ‚ΠΎ Π½Π΅ относится ΠΊ ядру
  2. ΠŸΡƒΡΡ‚Ρ‹Π΅ строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пустыми ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… символов ΠΊΡ€ΠΎΠΌΠ΅ \n. ВсС строки Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° \n. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ исходник ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ заканчиваСтся пустой строкой

  3. ΠžΡ‚ΡΡ‚ΡƒΠΏΡ‹:

    1. Для всСго, Ρ‡Ρ‚ΠΎ относится ΠΊ ядру, Π² ΠΊΠΎΠ΄Π΅ для отступа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ TAB. 1 отступ = 1 TAB. 1 TAB эквивалСнтСн 8 ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅
    2. Для всСго, Ρ‡Ρ‚ΠΎ Π½Π΅ относится ΠΊ ядру, для отступов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ символы ΠΏΡ€ΠΎΠ±Π΅Π»Π°. 1 отступ = 1 TAB = 4 ΠΏΡ€ΠΎΠ±Π΅Π»Π°
  4. Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки { }:

    1. Π’ опрСдСлСниях Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка ставится со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки

      inline unsigned int invert(unsigned int val)
      {
              return ~val;
      }
    2. Π’ случаС с if-else, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ:

      if (a == b) {
              do_first();
      } else if (c == a) {
              do_next();
      } else {
              do_nothing();
      }
    3. Π’ случаС с switch, case Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ switch. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сквозныС(Π½Π΅ содСрТащиС break, ΠΊΡ€ΠΎΠΌΠ΅ default) case, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ fall-through. НС рСкомСндуСтся Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ использованиСм сквозных case. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ стиля:

      switch (state) {
      case STATE_INIT:
              do_first();
              break;
      case STATE_RUN:
              do_run();
              /* fall through */
      case STATE_NEXT:
              do_next()
              break;
      default:
              return EUNKNOWN;
      }
    4. Π’ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка ставится Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Π° Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ – Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π±Π»ΠΎΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

      if (a == b) {
              for (int i = 0; i < sz; i++) {
                      do_smthng();
              }
      
              a = sz;
      }
  5. ΠšΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки ( ):

    1. Π’ выраТСниях (statements), ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

      if (state) {
              ...
      }
      
      for (i = k; i >= 0; i--) {
              ...
      }
      
      while (!ret) {
              ...
      }
      
      do {
              ...
      } while (i < cnt);
    2. Π’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ:

      bool is_last(struct item *it)
      {
              ...
      }
      
      bool tst = is_last(item_ptr);
      
      while (!is_last(ptr)) {
              ...
      }
  6. ΠšΠΎΠΌΠΏΠ°ΡƒΠ½Π΄Π½Ρ‹Π΅ конструкции пСрСносятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

    1. Π’ выраТСниях с if логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ пСрСносится Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку, которая начинаСтся с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

      if ((LAST_ITEM == a) && (b != a) && (NOT_FIRST == c)
                      && (k == p) && (NOT_FIRST != k)
                      && (g == r) && ((a == r) || (b == r)) {
              do_something();
      }

      Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ строкС, Π° Π·Π° счСт ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ‡Π°ΡΡ‚ΡŒ тСстируСмого выраТСния Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с выраТСниями Π²Π½ΡƒΡ‚Ρ€ΠΈ if-Π±Π»ΠΎΠΊΠ°.

    2. Π’ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ пСрСносС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ находятся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π·Π° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ скобкой. Π—Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ скобка ставится Π·Π° послСдним Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Если это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ставится Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ плюс ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚ уровня ΠΈΠ΄Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

      // first variant - aligned with opening delimiter
      prn("Here we have some long call"
          "\nThis string literal is concatenated."
          "\nFinally we have params: %d, %d, %d\n",
          some_really_really_really_long_long_param,
          short_param_a, short_param_b);
      
      // second variant - add an extra level of indentation to distinguish arguments
      some_very_very_very_long_function_call(
              one_indented_arg,
              second_indented_arg);
  7. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (+, -, *, /, %, =, <, >, <=, >=, ==, !=, <<, >>, |, &, ^, ?, :) ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ слСва ΠΈ справа ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. НапримСр: a + b вмСсто a+b. Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ. НапримСр: ++a, b->c, k = -a

  8. McCabe complexity Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 6 для простых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ 9 для слоТных. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, McCabe complexity ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 6 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ локально Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ описаниС, Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ расчСта:

    int somefunc(int a, int b, int c)
    {
            // McCabe = 1 at this point
            // statements denoted as ... here affect the control flow
            // McCabe is all about graph and possible paths, used to reach
            // from function call to return
    
            // we have two execution variants (if, else), each adds +1 to complexity
            if (a) {
                    ...
            } else {
                    ...
            }
    
            // at this point it would have been equal to 1 + 2 = 3
            // but we have more to offer:
    
            // add +1
            if (b) {
                    // add +2
                    if (a == c) {
                            ...
                    } else {
                            ...
                    }
            }
    
            // at this point it would have been equal to 1 + 1 + 2 = 4
            // but we have even more to offer:
    
            // add +1
            if (c) {
                    // add +3
                    if (b) {
                            ...
                    } else if (c) {
                            ...
                    } else {
                            ...
                    }
                    // add +1 as we have two possibilities:
                    // having return here and notreturned() acts as if-else
                    return 0;
            }
            notreturned();
            return -1;
            // at this point it is equal to 1 + 1 + 3 + 1 = 6
            // add one more indentation level and you're screwed
    }
  9. Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ согласно трСбованиям kernel-doc. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ дСлятся Π½Π° "внСшниС" ΠΈ "Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅". Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для автоматичСской сброрки Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΆΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹.

    ΠŸΡ€ΠΈ этом, слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ нСдостаточной, Ρ‚Π°ΠΊ ΠΈ излишнСй докумСнтированности. НапримСр:

    ИзлишнС. Π’ΡƒΡ‚ ΠΈ Ρ‚Π°ΠΊ понятно, ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ cnt ΠΈ Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

    int cnt = 0;       // counter
    while (cnt++ < k) {
            ...
    }

    НСдостаточно. Π’ΡƒΡ‚ Π½Π΅ мСшало Π±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅ΠΌ somevar ΠΊΠ°ΠΊ unsigned long long ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ сайд-эффСкты. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡƒΠ΄Π° взялась эта магичСская константа. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, константы Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ const ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

    tmp = *((unsigned long long *)&somevar) & 0xD0BF00AA00000000LLU;

    Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ стСпСни докумСнтированности ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Coding Style.

  10. ИспользованиС include guards, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, считаСтся ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ ΠΈ нСдопустимо. Π’ΠΎ ΠΆΠ΅ относится ΠΈ ΠΊ #pragma once. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π΄Π°Π½Π½Ρ‹Ρ… конструкциях ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ цикличСских зависимостСй. НиТС ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ зависимости ΠΈ способ Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Π½Π΅ΠΉ:

    Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ цикличСскиС зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π’ этом случаС, для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Π½ΠΈΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ forward declaration. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры, содСрТащСй Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° этой структуры:

    /* Forward declaration */
    struct niceobj;
    
    /*
     * Pointer named comfunc to function of the form
     * void name(struct niceobj *)
     * defined as type
     */
    typedef void (*comfunc)(struct niceobj *);
    
    /* Here we finally declare it */
    struct niceobj {
            /* Use the defined type */
            comfunc comfuncptr;
    
            /* Simply pointer named otherfunc without type definition
             * This one can be used without forward declaration
             */
            void (*otherfunc)(struct niceobj *, int);
    
            ...
    };
    
    /* Here we have some function pointers used */
    void comcom(struct niceobj *obj)
    {
            ...
    }
    
    void otherother(struct niceobj *obj, int somearg)
    {
            ...
    }
    
    static const struct niceobj nice = {
            .comfuncptr = &comcom,
            .otherfunc = &otherother
    };
    
    ...
    
    /* Use it */
    a = nice.comcom(&nice);
    b = nice.otherfunc(&nice, 0);
    /* Or explicitly like this */
    a = (*nice.comcom)(&nice);
    b = (*nice.otherfunc)(&nice, 0);
  11. typedef ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для opaque-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², внутрСнняя структура ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… частично (Π»ΡƒΡ‡ΡˆΠ΅ – ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ) сокрыта ΠΎΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ устроСн Π²Π½ΡƒΡ‚Ρ€ΠΈ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

    typedef struct unit_s {
            void *ptr;
            size_t size;
    } defunit_t;
    
    size_t defunit_getsize(defunit_t *unit);
    defunit_t *defunit_create(void *ptr, size_t size);
    ...

    Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ρƒ структуры, объявлСнной Ρ‚ΠΈΠΏΠΎΠΌ, Π΅ΡΡ‚ΡŒ имя (typedef struct unit_s {... вмСсто просто typedef struct {...). Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для упрощСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ, особСнно структур ΠΈ пСрСчислСний (ΠΊΡ€ΠΎΠΌΠ΅ случая, ΠΊΠΎΠ³Π΄Π° пСрСчислСния хранят константы).

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ transparent-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ скрываСт структуру ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

    struct vecpoint {
            long long x;
            long long y;
    };
    
    struct vecpoint to_vector(struct vecpoint *p1, struct vecpoint *p2)
    {
            struct vecpoint ret = {
                        .x = p2->x - p1->x,
                        .y = p2->y - p1->y
            };
            return ret;
    }

    Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ смСшанного Π²ΠΈΠ΄Π°, Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сокрыта ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Ρ‡Π°ΡΡ‚ΡŒ являСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ популярно Π² ядрС. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создаСт структуру ΠΈ заполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ поля. Π”Π°Π»Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ init(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дозаполняСт ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π½Π΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ typedef, вмСсто этого, для сокрытия ΠΏΠΎΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ mangling-схСма (ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ добавляСтся прСфикс ΠΈΠ»ΠΈ суффикс, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ: \_, \__, pv_, ...

  12. Для всСх ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΡ‚ΠΈΠ»ΡŒ наимСнования lowercase_underscored_style, ΠΊΡ€ΠΎΠΌΠ΅:

    • констант ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ, для Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ UPPERCASE_UNDERSCORED_STYLE
    • ΠΈΠΌΠ΅Π½ псСводо-ООП Ρ‚ΠΈΠΏΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ CamelCaseStyle

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ псСводо-ООП:

    /* Compiled with -fms-extensions */
    
    typedef struct SomeAnimal_s {
            double kgweight;
            char *name;
    } SomeAnimal_t;
    
    /* Inherits Animal */
    typedef struct HumanPerson_s {
            SomeAnimal;
            char *surname;
    } HumanPerson_t;
    
    /* ! NOTICE ! SomeAnimal is in CamelCase and is prefixed, so that all
     * methods belonging to it start with SomeAnimal_
     * while the right part stays in lowercase_underscored_style
     */
    void SomeAnimal_print(SomeAnimal_t *s)
    {
            printf("name: \"%s\", weight: %.2f\n", s->name, s->kgweight);
    }
    
    ...
    
    HumanPerson_t j = {
            .kgweight = 80.0,
            .name = "John",
            .surname = "Sins"
    };
    
    SomeAnimal_t bee = {
            .kgweight = 0.25,
            .name = "Queen Bee"
    };
    
    SomeAnimal_t *ptrs[] = {(SomeAnimal_t *)&j, (SomeAnimal_t *)&bee};
    for (int i = 0; i < sizeof(ptrs)/sizeof(*ptrs); i++) {
            SomeAnimal_print(ptrs[i]);
    }
    
    /* Outputs
     *   name: "John", weight: 55.00
     *   name: "Queen Bee", weight: 0.25
     */
  13. Π’ ΠΊΠΎΠ΄Π΅, коммСнтариях ΠΊ Π½Π΅ΠΌΡƒ, названиях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π΅ допускаСтся использованиС Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΊΡ€ΠΎΠΌΠ΅ английского. ИспользованиС транслита Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ допускаСтся. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚:

    • строки Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

      struct lang lang_UA = {
              .exit_label   = "Π’ΠΈΠΉΡ‚ΠΈ";
              .create_label = "Π‘Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ";
              ...
      };
    • собствСнныС ΠΈΠΌΠ΅Π½Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° транслитСрации языка ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. НапримСр:

      Π’ ΠΊΠΎΠ΄Π΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° εΌΊε…‰, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан ΠΊΠ°ΠΊ qiangquang_sensor

  14. char β‰  byte. Π’ соотвСтствии со стандартом Π‘:

    • sizeof(short) ≀ sizeof(int) ≀ sizeof(long) ≀ sizeof(long long)
    • char ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ ΠΈΠ»ΠΈ signed char ΠΈΠ»ΠΈ unsigned char, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 8 Π±ΠΈΡ‚. ΠŸΡ€ΠΈ этом Π΅Π³ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ достаточной, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС символы ΠΈΠ· execution character set
    • short ΠΈ int Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 16 Π±ΠΈΡ‚
    • long Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 32 Π±ΠΈΡ‚Π°
    • long long Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 64 Π±ΠΈΡ‚Π°

    БоотвСтствСнно всС Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ. Если Π½ΡƒΠΆΠ½Ρ‹ Π±Π°ΠΉΡ‚Ρ‹, ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ фиксированной ΡˆΠΈΡ€ΠΈΠ½Ρ‹, стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ uint8_t, u8 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹.

    • float – Ρ‚ΠΈΠΏ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ точности. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ IEEE 754 single-precision Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

      Π›ΠΈΡ‚Π΅Ρ€Π°Π» для опрСдСлСния float это F ΠΈΠ»ΠΈ f, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 3.14F. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ 3.14 это double

    • double– Ρ‚ΠΈΠΏ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ IEEE 754 double-precision Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

    • long double – Ρ‚ΠΈΠΏ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ точности. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сущСствСнно ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ

      Π›ΠΈΡ‚Π΅Ρ€Π°Π» для опрСдСлСния long double это L ΠΈΠ»ΠΈ l, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 3.14L.

  15. Если функция Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ somefunc(void), Π° Π½Π΅ просто somefunc(). somefunc() ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° этапС компиляции Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ извСстно ΠΎΠ± Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π°Ρ… всС Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ somefunc();

ЗаимствованиС ΠΊΠΎΠ΄Π°, авторскиС ΠΏΡ€Π°Π²Π°, Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ

  1. Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ свСдСния ΠΎΠ± авторствС
  2. Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ обязан ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ Π΅Π³ΠΎ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ЛицСнзия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΊΠΎ всСй Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ студСнта Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (Π² этом случаС LICENSE Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΊΠΎΡ€Π΅Π½ΡŒ), Π»ΠΈΠ±ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π² этом случаС LICENSE Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹). ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ядром Linux ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  3. ЗаимствованиС элСгантных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ привСтствуСтся. Π’ IT всС крутится Π²ΠΎΠΊΡ€ΡƒΠ³ Code Reuse. НСзачСм ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки, Ссли ΠΎΠ½ ΡƒΠΆΠ΅ имССтся, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π±Ρ‹Π» протСстирован поколСниями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²
  4. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ заимствованный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π°: источник, Π°Π²Ρ‚ΠΎΡ€Π°, Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ Π½Π° использованиС. ЗаимствованиС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠ΄Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ заимствованиями ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ указания
  5. ЗаимствованиС Π½Π΅ допускаСтся, Π² случаях Ссли:
    • Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρƒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² Ρ‚Π°ΠΊΠΈΡ… случаях допускаСтся рСимплСмСнтация (ΠΊΠΎΠ΄ изучаСтся, заимствуСтся идСя, с Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π° пСрвоисточник, ΠΊΠΎΠ΄ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ Π±Π΅Π· использования ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ);
    • ЗаимствованноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ являСтся Π·Π°ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ;
    • Заимствованный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ являСтся Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ большим (составляСт ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ);
    • Заимствованный Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π΄Π°Π΅Ρ‚ прСимущСств Π² сравнСнии с "Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ";
  6. Π—Π° Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» заимствования, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ оставляСт Π·Π° собой ΠΏΡ€Π°Π²ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ сразу нСсколько ΠΈΠ· ΡˆΡ‚Ρ€Π°Ρ„Π½Ρ‹Ρ… санкций:
    • Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ устранСния Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Pull Request;
    • ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² 0 Π±Π°Π»Π»ΠΎΠ²;
    • ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ -1 Π±Π°Π»Π» ΠΊ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΌΡƒ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ студСнта (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·Π° Π·Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° заимствования).

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСпозитория

  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

    [+] Repository
     |----- .etc
     |--[+] dk71_ivanov
     |   |----- LICENSE  (см. Π²Ρ‹ΡˆΠ΅)
     |   |----- README.rst
     |   |--[+] lab1_threaded_applications
     |   |   |----- LICENSE  (см. Π²Ρ‹ΡˆΠ΅)
     |   |   |----- README.rst
     |   |   |----- .gitignore
     |   |   |----- Makefile
     |   |   |--[+] src
     |   |   |   |----- somefile.c
     |   |   |   |----- ...
     |   |   |
     |   |   |--[+] inc
     |   |   |   |----- somefile.h
     |   |   |   |----- ...
     |   |   |
     |   |   |--[+] doc
     |   |   |   |----- ...
     |   |   |
     |   |   |-- ....
     |   |
     |   |--[+] lab2_simple_kernel_module
     |   |   |-- ....
     |   |
     |   |--[+] rgr_you_chose_the_name
     |   |   |-- ....
     |
     |--[+] dk72_sidorov
     |   |-- ....
     |
     |-- ....
    
  • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ названия Π² Π½ΠΈΠΆΠ΅ΠΌ_кСйсС_с_подчСркиваниями. ИспользованиС ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² названиях Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π½Π΅ допускаСтся.

  • Названия ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ студСнта Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ groupname_surname, Π³Π΄Π΅ surname β€” фамилия студСнта, ΠΊΠ°ΠΊ ΠΎΠ½Π° записана Π² Π·Π°Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠΌ пасспортС ΠΈΠ»ΠΈ Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€Π°Π²Π°Ρ…, Π° Ссли ΠΎΠ½ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ β€” Π² соотвСтствии с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ транслитСрации.

  • Названия Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ вмСстС с Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ. Названия Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ prefix_name, Π³Π΄Π΅ name β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° английском языкС, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΠΎΠ΅ студСнтом ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ

  • ДирСктория ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

    • README.rst β€” элСктронный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΊ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ (Π»ΠΈΠ±ΠΎ элСктронная ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚);

    • LICENSE β€” Π² случаС, Ссли ΠΎΠ½Π° отсутствуСт Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ (ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ) Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ студСнта ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ мСсто ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ;

    • Makefile. ДопускаСтся использованиС Π»ΡŽΠ±Ρ‹Ρ… систСм сборки (ΠΊΡ€ΠΎΠΌΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра, собираСмых Kbuild). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сборки (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ help all clean tidy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΈΠ·-ΠΏΠΎΠ΄ make. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡ‚ make систСму сборки, Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ make ΠΌΠΎΠ³ΡƒΡ‚ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмС. Π’ Makefile ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° рСализация Ρ†Π΅Π»Π΅ΠΉ all, clean, install (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ) ΠΈ Ρ†Π΅Π»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

      ПослС запуска Ρ†Π΅Π»ΠΈ clean, дирСктория Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² сборки (Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки, Ссли Ρ†Π΅Π»ΡŒ tidy отсутствуСт);

    • .gitignore Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ всСх Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² сборки. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, послС запуска сборки ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ commit всСй Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, git Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎ запуска сборки. Π—Π° основу ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ gitignore ΠΎΡ‚ GitHub

    • Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ src (содСрТит исходники), inc (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ) ΠΈ doc (докумСнтация) ΠΈΠΌΠ΅ΡŽΡ‚ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² дирСкториях Ρ€Π°Π±ΠΎΡ‚ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости (ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ исходники вмСстС с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π² ΠΊΠΎΡ€Π΅Π½ΡŒ Π½Π΅ допускаСтся)

ΠŸΡ€Π°Π²ΠΈΠ»Π° оформлСния ΠΈ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Pull Requests

  1. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ лишь минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π½Π°Π±ΠΎΡ€ исходных Ρ„Π°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для сборки. ПопаданиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ катСгоричСски нСдопустимо.

    Pull Request, содСрТащиС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ с Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, firmware устройств ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ) Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ Π±Π΅Π· объяснСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½. Π’ΠΎ ΠΆΠ΅ касаСтся ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли докумСнтация собираСтся Π² .pdf-Ρ„Π°ΠΉΠ» ΠΈΠ· .rst, Π½Π΅Ρ‚ нСобходимости Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠΌΠΈΡ‚ сам .pdf

  2. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Pull Request допускаСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” для исправлСния Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ (Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ).

    ΠŸΡ€ΠΈ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π²Π΅Ρ‚ΠΊΡƒ, ΠΎΠ½ΠΈ автоматичСски Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‡Π΅Π½Ρ‹ Π² Pull Request.

    Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² master-Π²Π΅Ρ‚ΠΊΠΈ рСпозитория Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ чистой ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ. Если Π΄Π΅Π»Π°Π΅Ρ‚Π΅ fork, Π·Π°Ρ‚Π΅ΠΌ ΡΠ΅Ρ€ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄Π°Π΅Ρ‚Π΅ Pull Request, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π² master-Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ всС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹. Для избСТания Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ squash merge Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ (ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ Pull Request) ΠΈΠ»ΠΈ rebase.

    ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Pull Request

    ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Pull Request

  3. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ Pull Request Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ вносимыС измСнСния ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ

  4. Π’ описании Pull Request ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ умСстно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² README.rst (Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ вмСсто README ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² описаниС PR). Если ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ ΡƒΠΆΠ΅ подавался PR ΠΈ Π±Ρ‹Π» ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ оформлСния, ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ PR Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅Π³ RE ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ PR ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ (Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ GitHub ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚ΠΈΠ»).

    Π’ Reviewers ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ любого ΠΈΠ· Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³, с ΠΊΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ.

  5. Когда ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Peer Review, ΠΏΠΈΡˆΠΈΡ‚Π΅ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ срСдства GitHub) всС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ошибки ΠΈ прСдлоТСния ΠΏΠΎ ΠΈΡ… ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ. Автор PR, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΈΡ‚ΡŒΡΡ, Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒ свою Ρ‚ΠΎΡ‡ΠΊΡƒ зрСния ΠΈ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π½Π°ΠΉΡ‚ΠΈ консСнсус.

  6. ПослС Peer Review, Π°Π²Ρ‚ΠΎΡ€ PR добавляСт прСподаватСля Π² Reviewers. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€ΠΎΠΌ ошибки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибками Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ оставляСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΈ студСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΈΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ошибок (Ссли ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ).

  7. ПослС исправлСния ошибок, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ€Π°Π· смотрит Pull Request ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Если PR Π±Ρ‹Π» ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (ΠΈΠΌΠ΅Π½Π½ΠΎ PR, Π²Π½Π΅ зависимости ΠΎΡ‚ ошибок ΠΊΠΎΠ΄Π°), послС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ просмотра, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ выполняСт PR merge. Π‘ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° студСнт ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ Π·Π°Ρ‰ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ случаС, Ссли {R Π±Ρ‹Π» ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΎΠ½ закрываСтся ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π° студСнту Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ со ссылкой Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ (ΠΏΠΎ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅).

ВсС Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Π² процСссС Ρ€Π΅Π²ΡŒΡŽ ошибки ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ бонусныС Π±Π°Π»Π»Ρ‹ Π·Π° ΠΈΡ… Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, Π° Π°Π²Ρ‚ΠΎΡ€ PR β€” Π·Π° ΠΈΡ… исправлСниС.

ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ рСкомСндуСтся Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ€Π΅Π²ΡŒΡŽ, вСдь Π² ΠΈΡ‚ΠΎΠ³Π΅ всС смотрит ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ.

About

Embedded Linux course repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published