Difference between revisions of "LU-LSP-b"
|  (→Kalendārs) | |||
| Line 45: | Line 45: | ||
| |- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | | ||
| ==== | ====21.02.08==== | ||
| 08:30 | 08:30 | ||
| | | | | ||
| Line 51: | Line 51: | ||
| |<big>'''Ievads kursā'''</big> | |<big>'''Ievads kursā'''</big> | ||
| |} | |} | ||
| * [https://www.dropbox.com/s/2c87i9k0vc3mthr/L00_Ievads.pdf?raw=1 Slaidi] | |||
| Unix un Linux operētājsistēmu pamatkoncepcijas | Unix un Linux operētājsistēmu pamatkoncepcijas. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.). | ||
| | | |||
| Vispārīgs pārskats par valodu C. | |||
| * [ | |||
| [[LU-LSP-b:MD1 | MD1]] '''MD0: Programmēšanas stils | |||
| MD_Koks: Dzimtas koks.'''] | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.10==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Programmēšanas valoda C'''</big> | |||
| |} | |||
| Vispārīgs pārskats par programmēšanas valodu C. Datu struktūras. C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli. | |||
| | | | | ||
| * '''Uzdots: [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.''' | |||
| |- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | | ||
| ====21.02.10==== | |||
| ... | |||
| 17:00 | |||
| | | | | ||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Intro: * Iekārtot darba vidi (linux, teksta redaktors, kompilators) * Izveidot un pašiem nokompilēt Hello world"" C valodā * Iepazīties ar UNIX čaulas komandām un uzdot jautājumus par neskaidrībām. * Versiju kontroles sistēmas github pamati."" | |||
| |- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | | ||
| ==== | ====21.02.15==== | ||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Darbs ar failiem'''</big> | |||
| |} | |||
| Sistēmas izsaukumi un standarta bibliotēkas funkcijas faila ievadam un izvadam.  Linux piedāvātās programmas darbam ar failu izvadu/ievadu  (''cat, tail, head, less, telnet'' u.c.).  Failu ievada un izvada ātrdarbības uzlabošana, buferi., ņemot vērā sistēmas arhitektūru. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.17==== | |||
| 15:00 | 15:00 | ||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Failu sistēma'''</big> | |||
| |} | |||
| Faila izmēra noteikšana.  Failu saites, stingrās un vājās (hard links, soft links).  Failu glabāšana un pieeja operētājsistēmā. ''i-node'' jēdziens. Sistēmas izsaukums stat(). Direktoriju struktūra.  Izsaukumi opendir(), readdir() un closedir().    | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.17==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_File: Failu kopēšana. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.22==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Atmiņas arhitektūra'''</big> | |||
| |} | |||
| Atmiņas arhitektūra. Virtuālā atmiņa. TEXT, DATA, HEAP un STACK segmenti. Koplietošanas atmiņa starp procesiem. Procedūru izsaukumi.  Parametru nodošana caur steku. Steka satura analīze un piekļuve stekam. | |||
| | | |||
| * [[[LU-LSP-b:MD3 | MD3]] '''MD_Dir: Direktoriju koka apstaigāšana.'''] | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.24==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Failu piekļuves režīmi'''</big> | |||
| |} | |||
| Faila piekļuves tiesību režīmi pie open() un umask.  Failu un i-node izsaukumi: chmod(), link(), unlink(), remove(), rename(), symlink(), readlink(), utime(), mkdir(), rmdir(), chdir(), getcwd().  Programma rakstīšanai log failā. Log faili.  Ekskluzīva rakstīšana ar open(...O_SYNC) un fcntl() metodēm. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.02.24==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Dir: Direktoriju koka apstaigāšana. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.01==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Virtuālā atmiņa'''</big> | |||
| |} | |||
| Virtuālās atmiņas lapas.  Page fault un segmentation fault.  Atmiņas aizsardzība. ''setjmp()'' un ''longjmp()''. | |||
| | | |||
| * [[[LU-LSP-b:MD4 | MD4]] '''MD_Mem: Atmiņas rezervācijas funkciju salīdzinājums.'''] | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.03==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Dinamiskā atmiņa'''</big> | |||
| |} | |||
| Dinamiskā atmiņas izdalīšana. Heap, malloc() un free(). Dienesta informācija pie atmiņas izdalīšanas un atbrīvošanas.  Brīvās atmiņas saraksti. Prasības malloc() un free() veiktspējai. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.03==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_An: Programmas analīze. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.08==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Atmiņas fragmentācija'''</big> | |||
| |} | |||
| Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi,  kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. | |||
| | | |||
| * [[[LU-LSP-b:MD5 | MD5]] '''MD_Frag: Atmiņas fragmentācijas algoritmu novērtējums ('''grupās''')'''] | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.10==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''KD1'''</big> | |||
| |} | |||
| KD1 kontroldarbs | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.10==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_KD: Kontroldarba analīze. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.15==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Atkļūdošana'''</big> | |||
| |} | |||
| Linux atkļūdošanas rīki un to lietošana. | |||
| | | |||
| * '''MP_Game: Kursa projekta tēmas (spēles) izvēle''' | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.17==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Daudz-uzdevumu vide'''</big> | |||
| |} | |||
| Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni (threads).  Kooperējošies procesi un preemptīvā daudz-uzdevumu metode.  Komanda '''ps'''.  ''getpid()'' un ''getppid()''. ''fork()'', ''exec()'', ''wait()''. ''system()''. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.17==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Dbg: Atkļūdošanas rīki. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.22==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Procesa dzīves cikls'''</big> | |||
| |} | |||
| Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi  kā process var beigties. exit() un _exit(). | |||
| | | |||
| * '''MP_Spec: Spēles noteikumu specifikācija''' | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.24==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Pavedieni'''</big> | |||
| |} | |||
| Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.24==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Thread: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.29==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Starpprocesu komunikācija.'''</big> | |||
| |} | |||
| Starpprocesu komunikācija.  Faili. Pipes. Koplietošanas atmiņa. Signāli. Alarm serviss un signāls. Sockets. | |||
| | | |||
| * '''MP_Prot1: Spēles komunikāciju protokols, 1. versija''' | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.31==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Sockets'''</big> | |||
| |} | |||
| Sockets abstrakcija komunikācijai. Klienta un servera arhitektūra.  Iteratīvie un paralēlie serveri.  Komunikācija starp nesaistītiem procesiem. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.03.31==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Jmp: ''setjmp()'',''longjmp()'' un taimera signāls. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.07==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_PSpec: Darbs pie kursa projekta. Spēles izvēle un specifikācija. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.07==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Servera klienta arhitektūra'''</big> | |||
| |} | |||
| TBD: Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. | |||
| | | |||
| * '''MP_Prot2: Spēles komunikāciju protokols, gala versija''' | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.12==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_Net: Starpprocesu komunikācija tīklā. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.14==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''TBD'''</big> | |||
| |} | |||
| TBD | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.14==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Tekstuālā lietotāja saskarne.'''</big> | |||
| |} | |||
| Tekstuālā lietotāja saskarne. Ncurses bibliotēka. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.19==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_PProt: Darbs pie kursa projekta. Komunikāciju protokola izstrāde. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.21==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''TBD'''</big> | |||
| |} | |||
| TBD | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.21==== | |||
| 17:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Grafiskā lietotāja saskarne'''</big> | |||
| |} | |||
| Grafiskā lietotāja saskarne. OpenGL. X-server. | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.26==== | |||
| 08:30 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''PD'''</big> | |||
| |} | |||
| | | |||
| PD_KP: Darbs pie kursa projekta. | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.28==== | |||
| 15:00 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Konsultācija'''</big> | |||
| |} | |||
| Atbildes uz studentu jautājumiem | |||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.04.28==== | |||
| 17:00 | |||
| | | | | ||
| {| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
| Line 75: | Line 529: | ||
| Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas). | Eksāmens, projektu demonstrācijas Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas). Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! | ||
| | | |||
| |- style='vertical-align: top;' | |||
| | | |||
| ====21.05.03==== | |||
| 14 | |||
| | | |||
| {| width='100%' style='background-color:#ddd;' | |||
| |<big>'''Sesija - vērtējumu izlikšana'''</big> | |||
| |} | |||
| Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! | |||
| | | | | ||
| * '''Iesniegt '''eksāmena/projekta failus un aprakstu''' E-studijās''' | |||
| |- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | |||
| |} | |} | ||
Revision as of 00:07, 6 February 2021
Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena: 31.10.20 : Rītdiena: 32.10.20 (ja ir lekcija)
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.
- Pasniedzēji:
- Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
- Krišjānis Nesenbergs
 
- Vērtējums = 15% praktiskie darbi, 25% mājas darbi, 10% dalība klasē, 20% KD1 un 30% Eksāmens.
- LSP kursa atsauksmes no iepriekšējiem gadiem.
Praktisko un mājas darbu iesniegšana
- Mājas darbus iesniegt e-studijās vai darbu testēšanas serverī, atkarībā no darba specifikācijas.
- Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c - mainot atbilstošo uzdevuma kodu (MD1) un faila formātu pēc nepieciešamības.
- Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
Praktisko darbu vērtēšanas kritēriji
- Praktisko darbu mērķis ir nostiprināt un parādīt izpratni par apgūto vielu, attiecīgi darbi ir jārisina patstāvīgi, tomēr jautājumu uzdošana pasniedzējam vai kolēģiem ir vēlama.
- Maksimālo vērtējumu par praktisko darbu var saņemt, ja tas iesūtīts līdz praktisko darbu lekcijas beigām (vai brīdim, kad vienojamies, ka publiski apskatīsim PD risinājumu).
- Pēc termiņa praktiskie darbi tiek pieņemti vēl tekošo nedēļu (līdz nākamās lekcijas sākumam) un tiks novērtēti, tomēr vairs ne ar maksimālo atzīmi.
- Papildus praktiskajos darbos un lekcijās var izpelnīties "plusiņus" ar dalību diskusijās, unikālu risinājumu un ideju piedāvāšanu, trāpīgu jautājumu uzdošanu, atbildēšanu uz kolēģu jautājumiem u.t.t., kas savukārt palīdzēs savākt +10% no kopējā vērtējuma "par darbu klasē".
Mājas darbu vērtēšanas kritēriji
- Mājas darbu iesniegšanas termiņa laiks ir attiecīgajā datumā līdz pusnaktij.
- Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 sekundi!):
- Tūdaļ pēc termiņa rezultāts tiek samazināts par 50%
- Nedēļu pēc termiņa darbi vairs netiek pieņemti.
 
Kalendārs
| Datums | Tēma, saturs | Uzdevumi | |
|---|---|---|---|
| 21.02.0808:30 | 
 
 | 
 MD1 MD0: Programmēšanas stils MD_Koks: Dzimtas koks.] | |
| 21.02.1015:00 | 
 
 | ||
| 21.02.1017:00 | 
 
 | PD_Intro: * Iekārtot darba vidi (linux, teksta redaktors, kompilators) * Izveidot un pašiem nokompilēt Hello world"" C valodā * Iepazīties ar UNIX čaulas komandām un uzdot jautājumus par neskaidrībām. * Versiju kontroles sistēmas github pamati."" | |
| 21.02.1508:30 | 
 
 | ||
| 21.02.1715:00 | 
 
 | ||
| 21.02.1717:00 | 
 
 | PD_File: Failu kopēšana. | |
| 21.02.2208:30 | 
 
 | 
 | |
| 21.02.2415:00 | 
 
 | ||
| 21.02.2417:00 | 
 
 | PD_Dir: Direktoriju koka apstaigāšana. | |
| 21.03.0108:30 | 
 
 | 
 | |
| 21.03.0315:00 | 
 
 | ||
| 21.03.0317:00 | 
 
 | PD_An: Programmas analīze. | |
| 21.03.0808:30 | 
 
 | 
 | |
| 21.03.1015:00 | 
 
 | ||
| 21.03.1017:00 | 
 
 | PD_KD: Kontroldarba analīze. | |
| 21.03.1508:30 | 
 
 | 
 | |
| 21.03.1715:00 | 
 
 | ||
| 21.03.1717:00 | 
 
 | PD_Dbg: Atkļūdošanas rīki. | |
| 21.03.2208:30 | 
 
 | 
 | |
| 21.03.2415:00 | 
 
 | ||
| 21.03.2417:00 | 
 
 | PD_Thread: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. | |
| 21.03.2908:30 | 
 
 | 
 | |
| 21.03.3115:00 | 
 
 | ||
| 21.03.3117:00 | 
 
 | PD_Jmp: setjmp(),longjmp() un taimera signāls. | |
| 21.04.0715:00 | 
 
 | PD_PSpec: Darbs pie kursa projekta. Spēles izvēle un specifikācija. | |
| 21.04.0717:00 | 
 
 | 
 | |
| 21.04.1208:30 | 
 
 | PD_Net: Starpprocesu komunikācija tīklā. | |
| 21.04.1415:00 | 
 
 | ||
| 21.04.1417:00 | 
 
 | ||
| 21.04.1908:30 | 
 
 | PD_PProt: Darbs pie kursa projekta. Komunikāciju protokola izstrāde. | |
| 21.04.2115:00 | 
 
 | ||
| 21.04.2117:00 | 
 
 | ||
| 21.04.2608:30 | 
 
 | PD_KP: Darbs pie kursa projekta. | |
| 21.04.2815:00 | 
 
 | ||
| 21.04.2817:00 | 
 
 | ||
| 21.05.0314 | 
 
 | ||
Uzdevumi
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
- MD1: Ģimenes koka ģenerēšanas programma.
- MD2 - nav uzdots.
- MD3: Vienādo failu meklēšana direktorijas kokā.
- MD4: Atmiņas rezervācijas funkciju salīdzināšana.
- MD5: Atmiņas fragmentācijas algoritmu novērtējums.
Eksāmens izpaužas kā kursa projekta aizstāvēšana.
Resursi
Pamācoši vingrinājumi un piemēri
- Failu I/O buferi un sekas: divi raksta, redzam trīs...
- Aprēķins, cik laika vajag pārkopēt 1 TB pa baitam bez bufera.
- Paging: piemērs 4K x 4K masīva apstaigāšanai, mainot indeksus: 4K vs 16M page faults
Literatūra
- Advanced Programming in the UNIX(R) Environment, Second Edition, by W. Richard Stevens, Stephen A. Rago. Addison Wesley Professional, 2005, ISBN 0-201-43307-9. (Indiešu eksemplāram ir ISBN 81-317-0005-4)
- "Linux system programming" by Robert Love, O'Reilly Media, 2007, ISBN 0596009585
- Advanced Linux Programming by CodeSourcery LLC,
- "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
- Sublime_Text_cheat_sheet - Lieliskā Sublime teksta redaktora taustiņu kombinācijas
- To become a good programmer... - C grāmatu saraksts
Programmētāja resursi
- Noderīgas Linux komandas
- Bash by Example @ibm/developerworks
- Intro to Linux kernel
- Programming in C: A Tutorial (by Brian W. Kernighan)
- GCC and make - par gcc kompilatoru no NTU
- Gnu make dokumentācija
- Tipiskas unix direktoriju hierarhijas īss apraksts.
- Sockets:
- Programming IP Sockets on Linux (tutorial @ gnosis.cx)
- Sockets Tutorial @ Linux Howtos
- Berkeley sockets (Wikipēdija)
 
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
- http://lkml.org/
- The Linux Kernel Module Programming Guide
Programmēšanas analīzes rīki
- PMD - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
Linux veiktspējas analīze
- Top 20 Linux monitoring tools @cyberciti
- 20 rīki Linux veikstpējas monitoringam (IPTraf u.c.) @tecmint
- CPU analīze
- Disku I/O analīze
- IO profiling at Linux programming blog
- Tīkla analīze
- "bashtop" rīks veiktspējas analīzei
Āķīgi uzdevumi un pieredze
- C/C++ Tricky Programs
- Computers are exact, precise, and logical machines, until they aren’t.
- Advent of Code
Atziņas
- Teach yourself programming in 10 years by Peter Norvig
- Code review: Learn how NASA codes (blog), and Mars Code (ACM article)
- Things Every Hacker Once Knew
- Kāpēc CR+LF? - Par to kāpēc vēsturisku iemeslu dēļ Windows sistēmās teksta rindas beigās ir CR+LF, kamēr Unix sistēmā tikai LF
- Linux Timeline - Linux distributīvu vēstures diagramma.
