Dlouholetý samouk maturuje

Dlouholetý samouk maturuje
« kdy: 11. 02. 2014, 19:54:31 »
Dobrý den,
s praxí šesti let (3 komerční mohu prokázat pracovní smlouvou) se již pomalu přestávám považovat za toho, který by měl jen tiše přihlížet. Nejraději pracuji ve strojovém kódu, či v jazyku Assembly. Bohužel se nezdá, že bych nalezl uplatnění v této oblasti a navíc vývoj trvá příliš dlouho - což s rychlostí dnešní doby moc nekoresponduje. Ovšem zmiňuji toť pro své nemalé znalosti kolem strojového prostředí. Můj počítač obsahuje mnou psaný BIOS, mnou psaný operační systém a mnou psaný Desktop. (Vše ve strojovém kódu, či ASM/D.) Dále pak ovládám jazyky ze kterých vzešlo C - Bison & Flex. Samotné C/C++ znám spíše teoreticky - prakticky jsem v tom vytvořil jen pár aplikací. Neboť mnohem raději totiž pracuji v jazyce naprosto obstojně C++ nahrazujícím, přičemž pracujícím na mnohem vyšší úrovni - a sice jazyce D. Krom těhto nižších vyšších jazyků pak s obrovským nadčením pracuji v Lispových projektech. (Bohužel takových moc není.) Jeho závorkový systém mi naprosto vyhovuje, avšak o jeho využití začínám pochybovat. Načež zmíním mrtvý Perl, kterýžto v současnosti svým významem ovlivňuje asi jen školská prostředí. Z dalších jazyků běžících na virtuálním stroji nesmím opomenout uvést Luu, rodinu .NET (Iron Python, C#, F#, J#, C++,... => OOP samozřejmostí, funkcionální paradigma na přijatelné úrovni), Javu a K. V těchto jazycích jsem vypracoval většinu vydaných aplikací. Pro mě však stále plápolá krása strojové architektury, kterou si jimi nenechám vzít. V neposlední řadě uvedu scriptovací velikány - Ruby, Python,... Databáze, webové jazyky (HTML, SHTML, XHTML (s nadšením pracuji v SVG), PHP, Ruby on Rails, Java Script, CSS, SASS, LESS,...), dotazovací jazyky atd. mě zase živí především obrovskou škálou brigád. Jenže web vyloženě nesnáším - z něj se mi líbí akoráte grafický výstup. Leč jak píši - zde jsem nalezl vpodstatě jediné uplatnění. Opravdu bych byl nejšťastnější při práci na Desktopu - ideálně v nižším vyšším jazyku (D/C++/...), či nízkém jazyku - ASM/strojový kód. O brigády nestojím, dokud studuji (tento rok maturuji), stejně pracovat nemohu, avšak narozdíl od svých vrstevníků netrpím iluzemi, pročež vezmu cokoliv, jen abych měl stálý, pravidelný plat... Problém tkví nejspíše v tom, že jsem si vybral špatnou školu, čily nemohu referovat maturitou ze střední školy technického směru. (zubní technik) A o vysoké škole se mnozí vyjadřují přespříliš rozporuplně. Nejhorší jest pak má životní situace - bez peněz a brzy zcela sám. A proto bych rád znal váš názor, jak se současnou situací naložit tak, abych nemusel vybírat popelnice.
Děkuji.


fail

Re:Dlouholetý samouk maturuje
« Odpověď #1 kdy: 11. 02. 2014, 20:12:32 »
google: "jooble"

Re:Dlouholetý samouk maturuje
« Odpověď #2 kdy: 11. 02. 2014, 20:18:17 »
Kdybych za těch 6 let našel práci (ne brigádu), asi sem nepíši... (dull)

Tom Liberec

Re:Dlouholetý samouk maturuje
« Odpověď #3 kdy: 11. 02. 2014, 21:35:39 »
Podle mne se z brigád může stát práce jen jedním způsobem.  Stanete se OSVČ. O všem aby vás uživilo to o čem pišete je jina. Budete dost možná muset dělat to co chtějí zákazníci, připadne zaměstnavatel,  nikoliv to co vás baví. Nikdo není ze všech úkolů v práci nadšen, tím se práce odlišuje od koníčka.

Ale borci na tomto fóru vám snad poradí kde se vámi uvedené používá,  třeba v průmyslové praxi.
Připadne co k tomu vzít dalšího aby jste byl na pracovním trhu zajímavější a zároveň využil to co umíte.
Grafické vystupy webu na tom se stavět dá.

kocur

Re:Dlouholetý samouk maturuje
« Odpověď #4 kdy: 11. 02. 2014, 21:58:03 »
Podle me je zaklad prestat si vymyslet http://www.digitalmars.com/d/archives/D/gnu/Compile_X_Window_Manager_5310.html, stejne si te kazdy proklepne a kazda jen trosku zavadejici informace ti dale moc nepomuze...


Re:Dlouholetý samouk maturuje
« Odpověď #5 kdy: 11. 02. 2014, 22:35:36 »
Kde jsem lhal? Nechápu kde jsi to vzal - co ten link jako dokazuje? Ano používám GDC (GNU D Compiler) - a? Kde jsi vzal proboha Linux? Nesnáším Linux. Když už, mám Unix - UnixWare. Ale stejně raději pracuji s DOSem...
Tak třeba takto vykresluji v ASM:
Kód: [Vybrat]
DrawPixel:

mov edi, [Screen.PhysBasePointer]
movzx eax, word [Screen.Width]
mov ebx, [esi + 8]

xor edx, edx
mul ebx
add eax, [esi + 4]

movzx ebx, byte [Screen.Depth]
shr ebx, 3
mul ebx

mov ebx, [esi]
mov [edi + eax], ebx

ret

ClearScreen:

mov [.y], ebx
mov [.color], edx
xor edx, edx
mov [.x], edx
mov [.y], edx
mov esi, .params

.clearLine:

call DrawPixel
inc dword [.x]

mov ebx, [Screen.Width]
cmp [.x], ebx
jne .clearLine

inc dword [.y]
mov ebx, [.y]
cmp ebx, [Screen.Height]
jne .clearLine

ret

.params:

.color dd 0
.x dd 0
.y dd 0

DrawImage:

cmp word [BMP.ID], "BM"
je DrawBMP

ret

DrawBMP:

cmp word [BMP.Depth], 24
je DrawBMP24

cmp word [BMP.Depth], 32
je DrawBMP32

ret

DrawBMP24:

pushad
mov [.X], eax
mov [.Y], ebx
mov [.x], eax
mov [.y], ebx

xor edx, edx
mov ebx, 4
mov eax, [BMP.Width]
div ebx
mov [.align], edx

mov esi, BMP
add esi, [BMP.Offset]
mov [.pointer], esi
mov ebx, [BMP.Height]
add [.y], ebx

.drawLine:

mov esi, [.pointer]
mov al, [esi]
mov [.color], al
mov al, [esi + 1]
mov [.color + 1], al
mov al, [esi + 2]
mov [.color + 2], al
add dword [.pointer], 3

mov esi, .params
call DrawPixel

inc dword [.x]
mov ebx, [BMP.Width]
add ebx, [.X]
cmp [.x], ebx
jne .drawLine

mov ebx, [.X]
mov [.x], ebx
dec dword [.y]

mov ebx, [.pointer]
add ebx, [.align]
mov [.pointer], ebx

mov ebx, [.Y]
cmp [.y], ebx
jne .drawLine

popad
ret

.X dd 0
.Y dd 0
.align dd 0
.pointer dd 0

.params:

.color dd 0
.x dd 0
.y dd 0

DrawBMP32:

pushad
mov [.X], eax
mov [.Y], ebx
mov [.x], eax
mov [.y], ebx
mov esi, BMP
add esi, [BMP.Offset]
mov [.pointer], esi
mov ebx, [BMP.Height]
add [.y], ebx

.drawLine:

mov esi, [.pointer]
mov eax, [esi]
mov [.color], eax
add dword [.pointer], 4

mov esi, .params
call DrawPixel

inc dword [.x]
mov ebx, [BMP.Width]
add ebx, [.X]
cmp [.x], ebx
jne .drawLine

mov ebx, [.X]
mov [.x], ebx
dec dword [.y]

mov ebx, [.Y]
cmp [.y], ebx
jne .drawLine

popad
ret

.X dd 0
.Y dd 0
.pointer dd 0

.params:

.color dd 0
.x dd 0
.y dd 0

DrawPartOfImage:

cmp word [BMP.ID], "BM"
je DrawPartOfBMP

ret

DrawPartOfBMP:

cmp word [BMP.Depth], 24
je DrawPartOfBMP24

cmp word [BMP.Depth], 32
je DrawPartOfBMP32

ret

DrawPartOfBMP24:

pushad

mov eax, [esi]
mov ebx, [esi + 4]
mov ecx, [esi + 8]
mov edx, [esi + 12]

mov [.X], eax
mov [.Y], ebx
mov [.x], eax
mov [.y], ebx
add [.y], edx
mov [.width], ecx

xor edx, edx
mov ebx, 4
mov eax, [BMP.Width]
div ebx
mov [.align], edx

mov eax, [BMP.Width]
sub eax, ecx
add [.align], eax
add [.align], eax
add [.align], eax

mov ebx, [esi + 16] ; X clip position
add ebx, [esi + 16]
add ebx, [esi + 16]

mov eax, [.width] ; Y clip position
add eax, [.width]
add eax, [.width]
add eax, [.align]
mov ecx, [esi + 20]
mul ecx

mov esi, BMP
add esi, [BMP.Offset]
add esi, eax
add esi, ebx
mov [.pointer], esi

.drawLine:

mov esi, [.pointer]
mov al, [esi]
mov [.color], al
mov al, [esi + 1]
mov [.color + 1], al
mov al, [esi + 2]
mov [.color + 2], al
add dword [.pointer], 3

mov esi, .params
call DrawPixel

inc dword [.x]
mov ebx, [.width]
add ebx, [.X]
cmp [.x], ebx
jne .drawLine

mov ebx, [.X]
mov [.x], ebx
dec dword [.y]

mov ebx, [.pointer]
add ebx, [.align]
mov [.pointer], ebx

mov ebx, [.Y]
cmp [.y], ebx
jne .drawLine

popad
ret

.X dd 0
.Y dd 0
.align dd 0
.pointer dd 0
.width dd 0

.params:

.color dd 0
.x dd 0
.y dd 0

DrawPartOfBMP32:

pushad

mov eax, [esi]
mov ebx, [esi + 4]
mov ecx, [esi + 8]
mov edx, [esi + 12]

mov [.X], eax
mov [.Y], ebx
mov [.x], eax
mov [.y], ebx
add [.y], edx
mov [.width], ecx

mov eax, [BMP.Width]
sub eax, ecx
add [.align], eax
add [.align], eax
add [.align], eax
add [.align], eax

mov ebx, [esi + 16] ; X clip position
add ebx, [esi + 16]
add ebx, [esi + 16]
add ebx, [esi + 16]

mov eax, [BMP.Width] ; Y clip position
add eax, [BMP.Width]
add eax, [BMP.Width]
add eax, [BMP.Width]
mov ecx, [esi + 20]
mul ecx

mov esi, BMP
add esi, [BMP.Offset]
add esi, eax
add esi, ebx
mov [.pointer], esi

.drawLine:

mov esi, [.pointer]
mov eax, [esi]
mov [.color], eax
add dword [.pointer], 4

mov esi, .params
call DrawPixel

inc dword [.x]
mov ebx, [.width]
add ebx, [.X]
cmp [.x], ebx
jne .drawLine

mov ebx, [.X]
mov [.x], ebx
dec dword [.y]

mov ebx, [.pointer]
add ebx, [.align]
mov [.pointer], ebx

mov ebx, [.Y]
cmp [.y], ebx
jne .drawLine

popad
ret

.X dd 0
.Y dd 0
.align dd 0
.pointer dd 0
.width dd 0

.params:

.color dd 0
.x dd 0
.y dd 0

Zde initializuji Vesu:
Kód: [Vybrat]
InitializeVESA:

in al, 0x92
or al, 2
out 0x92, al

mov bx, 0x4118
mov ax, 0x4F01
mov di, Screen
mov cx, bx
int 0x10

mov ax, 0x4F02
int 0x10

cli
lgdt [.GDTR]

mov eax, cr0
or al, 1
mov cr0, eax

; CR0: PG|----RESERVED----|NE|ET|TS|EM|MP|PE
; PE Bit 0. The Protected Environment flag. This flag puts the system into protected mode when set.
; MP Bit 1. The Monitor Coprocessor flag. This flag controls the operation of the "WAIT" instruction.
; EM Bit 2. The Emulate flag. When this flag is set, coprocessor instructions will generate an exception.
; TS Bit 3. The Task Switched flag. This flag is set automatically when the processor switches to a new task.
; ET Bit 4. The Extension Type flag. ET (also called "R") tells us which type of coprocessor is installed. If ET = 0, an 80287 is installed. if ET = 1, an 80387 is installed.
; NE Bit 5. New exceptions. If this flag is clear, FPU exceptions arrive as interrupts. If set, as exceptions.
; PG Bit 31. The Paging flag. When this flag is set, memory paging is enabled. We will talk more about that in a second.

mov ax, 0x8
mov ds, ax
mov es, ax
mov ss, ax

jmp 0x10:Kernel

.GDT dq 0, 0xCF92000000FFFF, 0xCF98000000FFFF

; Selector 0x00 cannot be used | 0x10 will be our code | 0x08 will be our data

.GDTR:

dw 0x1F
dd .GDT

Onu komerční praxi jsem měl v Lusorion Creatives. Dále pak mám certifikát za účast na projektu Net BSD. Chceš abych ti napsal program v Lispu, Ruby,...? Nemám problém - v ničem jsem nelhal - naopak raději jsem napsal jen výtah - aby to nevypadalo moc neuvěřitelně. Programuji každý den 90% volného času. Jestli chceš rozeberu ti všechny opcode instrukce instrukční sady Intel (Pentium), AMD a několika mikroprocesorů. Popíši ti detailně CIL, cokoliv. Popíši ti všechny IO porty ve sběrnici všechny specifické adresy RAM - cokoliv... (Prvních 256 byte je IVT 16 bits real-time režimu, pak tam je CMOS baterie - pointery na karty nastavení a pak tam je výstup kontroly všech zařízení. Co dál - mám popsat vyšší paměť, řádek A20, IQR,...? Nemám problém - udělám ti OS ve strojovém kódu v Bless a to pro zmíněná CPU v real-time i chráněném režimu.) Chceš stroják? CD máš int 16 - do vektoru v IVT. ED - máš skok do vektoru 32 - od offsetu v IBP... (Popsané v prvním quad wordu GDC - Global Descriptor Table.) Tak kde jsem kruci lhal? Vysolím ti tu BIOS jako nic - musím snad?


mr.rubik

Re:Dlouholetý samouk maturuje
« Odpověď #6 kdy: 11. 02. 2014, 22:42:11 »
A holku... Máš? :D

Re:Dlouholetý samouk maturuje
« Odpověď #7 kdy: 11. 02. 2014, 22:46:45 »
Nemám holku - mám Aspergerův syndrom. Pročež mě toto vskutku nezajímá. Vztah pro mě má být dlohodobá záležitost - nikdy jsem nepotřeboval pubertu - abych očuchával jak to funguje a tyhle blbosti. Takže to jsem nepleť - zde se řeší zcela něco jiného...

Jinak sorry chyba - pletu si to s int3 - CD pracuje s IVT 1023 (1KiB) - http://wiki.osdev.org/Memory_Map_(x86)
Pak ty opcode x86:
http://ref.x86asm.net/coder32.html

Momentálně pracuji na svém OS, takže jestli chceš nějakou ukázku, napiš jazyk pak jaký program a nemám problém... Ale neoznačuj mě za lháře - to vskutku ne.

mr.rubik

Re:Dlouholetý samouk maturuje
« Odpověď #8 kdy: 11. 02. 2014, 22:55:04 »
Tak v tom případě najdi firmu, která se ti líbí (a která se zabývá tím, co děláš ty), pošli jim svůj OS a pokud je to tak, jak píšeš, určitě tě vezmou. Zdrojáky sem fakt pastovat nemusíš, podobnejch je plnej internet a demoscéna :) Záleží na tom, co předvedeš v práci, jak dlouho vydržíš dělat na tom, co tě nebaví. Tady ti nemusí věřit nikdo nic...

Re:Dlouholetý samouk maturuje
« Odpověď #9 kdy: 12. 02. 2014, 05:56:07 »
To vskutku není. Pošli link - protože tento kód fakt nemůžeš jinde najít. (Vesu ano, ale ono vykreslení ne.) Opakuji - mám problém s tím najít práci. K čemu je posílat do .NET nabídky ASM OS? Tak se musím znova opakovat - většina nabídek je pro web... Uvažuji nad tím, udělat si CNC kurz, ale to je opravdu vše co můžu?

Najdi mi toto:

Kód: [Vybrat]
mov eax, [FileTableData.Offset]
mov [.startSector], eax
mov eax, [FileTableData.Length]
mov [.sectorsToLoad], eax
mov dword [.outAddress], FileTable
mov esi, .fileStruct
call ATA.Read

mov edi, .fileName
mov ebx, 2
call SearchFile

mov dword [.startSector], eax
mov dword [.sectorsToLoad], ebx
mov dword [.outAddress], BMP
mov esi, .fileStruct
call ATA.Read

Můj souborový systém - tak jestli ho někde jinde najdeš... :D Pak mi najdi toto:

Kód: [Vybrat]
SearchFile:

push esi
push ecx

mov esi, FileTable
mov eax, [edi]

.searchLoop:

cmp eax, [esi]
je short .test

add esi, 4
jmp short .searchLoop

.test:

mov [.esi], esi
mov [.edi], edi

mov ecx, 1
add esi, 4
add edi, 4

.testLoop:

mov eax, [esi]
cmp eax, [edi]
jne short .testDone

add esi, 4
add edi, 4
inc ecx
jmp short .testLoop

.testDone:

mov esi, [.esi]
mov edi, [.edi]

cmp ebx, ecx
jge short .done

mov eax, [edi]
jmp short .searchLoop

.done:

sub esi, 4
mov ebx, [esi]
sub esi, 4
mov eax, [esi]

pop esi
pop ecx
ret

.esi dd 0
.edi dd 0

Ne, opravdu nedělám OS typu Ctrl + C -> 90% z něj nikde jinde nenajdeš a ten zbytek hold jinak pořešit nejde - VBR kupříkladu.

darkenik

Re:Dlouholetý samouk maturuje
« Odpověď #10 kdy: 14. 02. 2014, 16:20:18 »
ahoj,
predpokladam, ze s aspergerovym syndromom  asi tvoja efektivita pri praci ktora ta nebavi  (weby a tak ) bude minimalna. Tak by som sa zameral na to co ta bavi. Tu mozem len hadat, ze to moze byt programovanie operacneho systemu, popripade nejake firmwary zariadeni.

Je pravda , ze takych ponuk nie je vela. V tvojom pripade by som skusiil priamo oslovit firmy co sa tym zaoberaju, aj ked nemaju vypisanu otvorenu poziciu. (Oracle so Solarisom ma vyvojove centrum v Prahe. Red Hat ma zase vyvojarov v Brne, ak prekonas odpor k linuxu.) V oboch firmach bez pohovoru v anglictine nepochodis.  Mozno najdes nejake firmy , ktore hladaju vyvojarov pre embeded linux zariadenia. V kazdom pripade to asi bude skor o programovani v C ako strojovy kod.



 

Re:Dlouholetý samouk maturuje
« Odpověď #11 kdy: 14. 02. 2014, 22:35:52 »
A není lepší ten kurz CNC? Co píšeš dle mého nemá smysl - spíše se snažím maximálně využít svých kontatků, aby mě právě někam protlačili - jak píšeš - FirmWare, mikroprocesory,... (Přijít někam úplně s holou stránkou a dostat místo v dnešní době - to by byl zázrak... :D ) Mimo nízké strojové struktury přeci mohu dělat pro Desktop... (C#, LISP,...) Jde mi jen o to, že nemám školu s vhodným zaměřením a je málo nabídek v pro mě vhodných oblastech... (I když požadavky splňuji, je těžké někoho o tom přesvědčit - respektive se mi to mnohokrát podařilo, ale navíc teď studuji - což je pěkný kruch, až dostuduji, už potřebuji práci.) Zkrátka jsem se chtěl jen informovat o svých možnsotech - CNC, využití známých, vysoká - ale to mi přijde málo. Copak toho více není? (V takovéto obrovské oblasti...)

Re:Dlouholetý samouk maturuje
« Odpověď #12 kdy: 14. 02. 2014, 22:38:06 »
*kruh

Tom Liberec

Re:Dlouholetý samouk maturuje
« Odpověď #13 kdy: 14. 02. 2014, 23:26:30 »
Pokud jsi schopen k procesoru napsat operační systém práci najdeš. Procesory se vyvíjejí a bude to potreba. Navíc budes moci pracovat s domova pokud by to měl byt problém. Jestli se mohu zeptat, vyhovuje tedy spíše elektronicka komunikace, e-maily, fóra atd?

Dokonce si myslím,  že bych možná jednou pro tebe mohl mit zakázku.
Zaměstnání ne tolik takové prace mit nebudeme nikdy pro konkretne zaměřeného IT odborníka, navíc to nebude letos.

Má nastat doba internetu věcí,  no a az to lidi přejde nebo třebas ne bude procesor v kde čem. V oboru kde jsem ja jde o bezpecnost. Vlastní OS pak dost věcí řeši.

Re:Dlouholetý samouk maturuje
« Odpověď #14 kdy: 15. 02. 2014, 14:01:58 »
Nepoužívám mobil (pouze v rámci toho, že ostatní ano a tak kvůli nim občas musím - vždy jim říkám, že mi musí říci, kdy mám sledovat mobil, jinak se mi nedovolají), ale jak píšeš - elektronickou komunikaci. Avšak nemyslím si, že by mi vadilo pracovat mimo domov. Respektive já nepotřebuji více, než-li spát (pod střechou), jíst atp. - nic jiného nemám potřebu chtít... Právě proto chci žít prací - tím co mě baví... Rád vypomůži - poněvadž se v CPU zkrátka rád hrabu. Hodnota CPU programátorů dle mého bude už jen klesat, jelikož se vše přesouvá na web. Pročež jsem založil toto téma, abych se dozvěděl zda-li existuje ještě oblast, kde bych se mohl uplatnit... (Kupříkladu zmíněné CNC, dále pak mne napadá robotika,...) A jak píši, stále budu raději za Desktop, než-li za kódování markovým jazykem...