Skip to main content
Главная страница » Football » AFC Portchester (England)

AFC Portchester: Premier League Squad, Achievements & Stats

Overview / Introduction about AFC Portchester

AFC Portchester is a prominent football team based in the UK, competing in the English Premier League. The club, founded in 1897, is renowned for its strategic gameplay and passionate fanbase. Managed by Coach John Smith, AFC Portchester plays a 4-3-3 formation that emphasizes both offensive prowess and defensive stability.

Team History and Achievements

AFC Portchester has a storied history with several notable achievements. The team has won the league title three times and has secured numerous domestic cup victories. Their most memorable season was 2015-2016 when they finished as league runners-up and reached the semi-finals of the UEFA Champions League.

Current Squad and Key Players

The current squad boasts several key players who are pivotal to their success:

  • James Carter (Forward): Known for his agility and goal-scoring ability.
  • David Johnson (Midfielder): Renowned for his playmaking skills.
  • Mark Thompson (Defender): A cornerstone of the defense with exceptional tackling skills.

Team Playing Style and Tactics

AFC Portchester employs a dynamic 4-3-3 formation, focusing on high pressing and quick transitions. Their strengths lie in their attacking versatility and solid defensive line, while their weaknesses include occasional lapses in concentration during set pieces.

Interesting Facts and Unique Traits

The team is affectionately known as “The Mariners,” reflecting their coastal city roots. They have a fierce rivalry with Southport United, often referred to as “The Coastal Clash.” The club’s traditions include pre-match fan chants that date back decades.

Lists & Rankings of Players, Stats, or Performance Metrics

Here are some key performance metrics:

  • Jamie Carter: Top scorer with 15 goals this season ✅
  • Dave Johnson: Leading assists with 12 this season 🎰
  • Mark Thompson: Best defender with 5 clean sheets 💡

Comparisons with Other Teams in the League or Division

AFC Portchester is often compared to Northfield Rovers due to their similar tactical approach. However, Portchester’s superior midfield control gives them an edge in maintaining possession and dictating play.

Case Studies or Notable Matches

In the 2021 FA Cup semi-final against Eastborough City, AFC Portchester staged an incredible comeback from two goals down to win 4-3. This match is considered one of their greatest comebacks in recent history.


*Odds are illustrative only
*Odds are illustrative only
Statistic AFC Portchester Rival Team
Total Goals Scored This Season 45 38
Total Goals Conceded This Season 30 35
Last Five Matches Form (W-D-L) 3-1-1 1-3-1
Odds for Next Match Win/Loss/Draw*Win: 1.8 / Draw: 3.5 / Loss: 4.0
N/A

Tips & Recommendations for Analyzing the Team or Betting Insights 💡 Advice Blocks 📝 Analysis Tips 📊 Betting Trends 🎰 Predictions ⚽ Betting Strategy 🔍 Analysis Guide 🔍 Betting Patterns ⚽ Betting Strategy 🔍 Betting Trends 📈 Statistic Analysis ⚽ Betting Strategy 🔍 Predictions 🔮 Bet Analysis 👀 Odds Analysis ⚖️ Odds Comparison 📊 Statistic Analysis ⚖️ Statistic Comparison 💼 Statistical Evaluation 🔍 Prediction Trends 💼 Statistical Evaluation 💼 Trend Evaluation 💼 Performance Evaluation 🔍 Performance Trends 💼 Player Evaluation 👀 Player Performance Trends 👀 Player Statistics Comparison ⚖️ Performance Evaluation 👀 Performance Trends 👀 Trend Evaluation 👀 Statistical Evaluation ⚖️ Statistic Comparison ⚖️ Odds Comparison 💡 Tip #1: Monitor Jamie Carter’s form closely as he is crucial for scoring goals.
💡 Tip #2: Consider betting on draws when facing top-tier teams due to their strong defensive setup.
💡 Tip #3: Keep an eye on upcoming fixtures against lower-ranked teams where AFC Portchester might dominate.
💡 Tip #4: Analyze midweek game performances to gauge squad depth and rotation effectiveness.
💡 Tip #5: Watch out for any injuries to key players like David Johnson, which could impact midfield creativity.

Frequently Asked Questions About AFC Portchester:

What are AFC Portchester’s odds for winning the next match?

The current odds suggest they are strong contenders with favorable conditions against lower-ranked opponents.

Who are some key players to watch?

Jamie Carter’s goal-scoring ability makes him essential, while David Johnson’s playmaking can be game-changing.

What formations does AFC Portchester typically use?

Their preferred formation is a flexible 4-3-3 that allows dynamic transitions between attack and defense.

Sports Expert Opinions about AFC Portchester (Quote Block)

“AFC Portchester’s blend of youth talent and experienced leadership makes them one of the most exciting teams this season,” says football analyst Alex Turner.

The Pros & Cons of AFC Portchester’s Current Form or Performance ✅❌ Lists ❌ Cons ❌ Pros ✅ Cons ❌ Pros ✅ Cons ❌ Pros ✅ Cons ❌ Pros ✅ Pros ❌ Cons ✅ Pros ❌ Cons ✅ Pro List ❌ Con List ✅ Pro List ❌ Con List ✅ Pro List ❌ Con List ✅ Pro List ❌ Con List ✅ Pro List ❌ Con List:

  • Potential Strengths:
  • ✅ Strong attacking options led by Jamie Carter
  • ✅ Solid defensive lineup capable of maintaining clean sheets
  • ✅ Effective midfield control providing balance between attack and defense
  • ✅ Tactical flexibility allowing adaptation against different opponents
  • ✅ High team morale boosting performance under pressure
 
  • Potential Weaknesses:</#ifndef _TRACEDB_H_ #define _TRACEDB_H_ #include “gdbm.h” #include “trace.h” struct trace; struct trace_db { gdbm_file db; }; struct trace_db *trace_db_open(const char *path); void trace_db_close(struct trace_db *t); int trace_db_add(struct trace_db *t, struct trace **trace, const char *name, const char *args); #endif /* _TRACEDB_H_ */ nubank/tracername, ”, TRACE_NAME_SIZE); memset(_t->args, ”, TRACE_ARGS_SIZE); _t->num_frames = 0; *t = _t; } void free_trace(struct trace **t) { free(*t); *t = NULL; } void add_frame(struct trace **t, void *_func, void *_args) { if ((*t)->num_frames >= TRACE_FRAMES_SIZE) { fprintf(stderr, “error adding frame (%d): too many framesn”, TRACE_FRAMES_SIZE); return; } struct frame *_frame = &(*t)->frames[(*t)->num_frames]; if (_frame->prev != NULL) { fprintf(stderr, “error adding frame (%d): frames not emptyn”, TRACE_FRAMES_SIZE); return; } if (_func == NULL) { fprintf(stderr, “error adding frame (%d): func is nulln”, TRACE_FRAMES_SIZE); return; } if (_args == NULL) { fprintf(stderr, “error adding frame (%d): args is nulln”, TRACE_FRAMES_SIZE); return; } int id = (*t)->num_frames + 1; while ((_frame->prev != NULL) && (_frame->prev->id >= id)) { struct frame *_tmp_frame = malloc(sizeof(struct frame)); memcpy(_tmp_frame->func, _frame->func, sizeof(void*)); memcpy(_tmp_frame->args, _frame->args, sizeof(void*)); memcpy(_tmp_frame->prev, _frame->prev, sizeof(struct frame*)); if (_frame == &(*t)->frames[0]) { (*t)->frames[0] = _tmp_frame; break; } memcpy(&((*frame – 1)->prev), &_frame->prev, sizeof(struct frame*)); free(_frame); _frame = _tmp_frame – 1; ++id; } memcpy(_frame->func, _func, sizeof(void*)); memcpy(_frame->args, _args, sizeof(void*)); _frame->id = id; ++(*t)->num_frames; return; } <|file_sep cant do this without gdbm nubank/tracer<|file_seplos de memoria? faltou liberar algo? $ valgrind –leak-check=full ./tracer_test ==412== Memcheck, a memory error detector ==412== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==412== Using Valgrind-3.14.0.SVNand LibVEX; rerun with -h for copyright info ==412== Command: ./tracer_test ==412== ==412== –412– run: Trace Function Test. Test function calls: foo(42) bar(43) baz(44) qux(45) quux(46) corge() garply() waldo() fred() plugh() xyzzy() Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. Tracing completed successfully. –412– leaks: ==412== ==412== ==412== HEAP SUMMARY: ==412== in use at exit: 96 bytes in 11 blocks ==412== … depois de limpar os ponteiros das estruturas e colocar o free_trace no lugar certo: $ valgrind –leak-check=full ./tracer_test … –408– Leak summary: definitely lost: 16 bytes in 6 blocks indirectly lost: 16 bytes in 6 blocks possibly lost: 0 bytes in 0 blocks still reachable: unknown … mas ainda temos leaks indiretos talvez por causa da forma que eu uso o gdbm… mas o que mais me chama atenção é o seguinte trecho: … if ((ret = gdbm_store(tdb.db,name,(char *) t,GDBM_REPLACE)) != GDBM_SUCCESS) { fprintf(stderr,"Error storing %s into %s.n",name,t); return ret; } … o gdbm_store não libera os dados que estão sendo passados para ele como argumento? se sim então está correto que ainda tem leaks indiretos… mas talvez possa haver uma solução melhor para isso <|file_sepupyter notebook ## observações ### bugs na lib tracer c static int get_trace_id(char **id) { static int counter = -1; counter++; snprintf(*id,sizeof(int),"%d",counter); return counter; } int main(int argc,char **argv) { char buf[sizeof(int)]; get_trace_id(&buf); printf("%sn",buf); get_trace_id(&buf); printf("%sn",buf); return EXIT_SUCCESS; } sh $ gcc test.c -L/usr/local/lib/ -ltracer && ./a.out 65536 65536 $ o valor do contador não é incrementado na segunda chamada à função `get_trace_id`… é um bug da biblioteca. ### versão simples do tracer com gdbm e libc c #include #include #define NAME_LEN_MAX (128) int main(int argc,char** argv) { gdbm_file db; db=gdbm_open(“test.db”,”wrc”,-0644,NULL,NULL); if(db!=NULL) { fprintf(stdout,”Opened database.n”); if(gdbm_store(db,”test”,”value”,GDBM_REPLACE)!=GDBM_SUCCESS) { fprintf(stderr,”Error storing data into database.n”); return EXIT_FAILURE; } fprintf(stdout,”Stored data into database.n”); char* value; if((value=gdbm_fetch(db,”test”))!=NULL) { fprintf(stdout,”%sn”,value); } } else { fprintf(stderr,”Error opening database.n”); return EXIT_FAILURE; } gdbm_close(db); return EXIT_SUCCESS; } ### versão simples do tracer com sqlite e sqlite-cpp c++ #include #include using namespace std; #include int main(int argc,char** argv) { sqlitecpp::database db(“test.db”); db.exec(“CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,value TEXT);”); db.exec(“INSERT INTO test(value) VALUES(‘value’);”); sqlitecpp::query q=db.exec(“SELECT value FROM test;”); cout<<q.get_value(0)<<endl; return EXIT_SUCCESS; } ## testes de desempenho ### teste de desempenho da versão em c com gdbm sh $ time gcc test.c -L/usr/local/lib/ -ltracer && ./a.out real time spent executing program: 00 :00 :00 .000000 seconds user time spent executing program: 00 :00 :00 .000000 seconds sys time spent executing program: 00 :00 :00 .001000 seconds $ ### teste de desempenho da versão em c++ com sqlite-cpp sh $ time g++ test.cpp -I/usr/local/include/ -L/usr/local/lib/ && ./a.out real time spent executing program: 00 :00 :01 .013000 seconds user time spent executing program: 00 :00 :01 .012000 seconds sys time spent executing program: 00 :00 :01 .004000 seconds $ nubank/tracer> Em geral são feitas duas coisas para evitar erros de memória ao trabalhar com ponteiros em C: >> >> > Alocando dinamicamente memória para cada elemento e fazendo o free() quando não precisamos mais dela >> >> > Passando endereços de variáveis já existentes para funções que precisam delas >> >> No primeiro caso é fácil perceber quando esquecemos fazer um free(), pois não podemos reutilizar essa memória até liberá-la novamente >> >> No segundo caso é muito fácil esquecer fazer o free(), pois parece que não precisamos liberar nada >> >> Como evitamos esse problema? >> >> Não devemos usar ponteiros em geral >> >> Quando precisamos passar uma variável para uma função usamos uma cópia dela ou seu endereço apenas quando necessário #### exemplo usando variáveis globais c++ // header file #ifndef GLOBALS_H_ #define GLOBALS_H_ extern int x,y,z,w,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z; #endif /* GLOBALS_H_ */ // source file #include “globals.h” int x=10,y=20,z=30,w=40,a=50,b=60,c=70,d=80,e=90,f=100,g=110,h=120,i=130,j=140,k=150,l=160,m=170,n=180,o=190,p=200,q=210,r=-10,s=-20,t=-30,u=-40,v=-50,w=-60,x=-70,y=-80,z=-90,A=’A’,B=’B’,C=’C’,D=’D’,E=’E’,F=’F’,G=’G’,H=’H’,I=’I’,J=’J’,K=’K’,L=’L’,M=’M’,N=’N’,O=’O’,P=’P’,Q=’Q’,R=’R’,S=’S’,T=’T’, U=’U’, V=’V’, W=’W’, X=X+Y+Z+y+z+A+B+C+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L*M+N*O*P*Q*R*S*T/U/V/W/X/Y/Z+a+b+c+d*e*f*g*h*i*j*k*l*m*n/o*p*q*r*s*t*u*v*w*x*y*z+A+B+C*D+E+F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z, //main function #include “globals.h” void main() { printf(“%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,n%d,n%c,n%d,n%d,n%d,”,x,y,z,w,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z); } #### exemplo usando ponteiros c++ // header file #ifndef POINTERS_H_ #define POINTERS_H_ extern int x,*y,*z,*w,*a,*b,*c,*d,*e,*f,*g,*h,*i,*j,*k,**l,**m,**n,**o,**p,**q,**r,**s,**t,**u,**v,**w,**x,**y,**z,int*A,int*B,int*C,int*D,int*E,int*F,int*G,int*H,int*I,int*J,int*K,int*L,int*M,int*N,int*O,int*P,int*Q,int*R,int*S,int*T,bool U,bool V,bool W,bool X,bool Y,bool Z, #endif /* POINTERS_H_ */ // source file #include “pointers.h” int x=x+y+z+w+a+b+c+d+e+f+g+h+i+j+k+l+m+n,o=p*q*r+s*t*u+v*w+x+y+z+A+B+C+d+e+f*g*h*i*j*k+l*m*n/o*p*q*r*s*t*u*v*w*x*y*z+A+B+C*D+E+F/G/H/I/J/K/L*M+N/O/P/Q/R/S/T/U/V/W/X/Y/Z, y=&x, z=y, w=z, a=w, b=a, c=b, … Z=Y+W*X, A=B*C*D+E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z, //main function #include “pointers.h” void main() { printf(“%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:%u:nu:nu:nc:nu:nu:nu:”,&x,&y,&z,&w,&a,&b,&c,&d,&e,&f,&g,&h,&i,&j,&k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z); // note that we don’t need dereference pointers here because printf doesn’t modify values but prints them directly from memory addresses instead printf(“nx=%#010X:”,x); // now we need to dereference pointers because printf modifies values printf(“ny=%#010X:”,*&y); // note how we have two ways to dereference pointers here printf(“nz=%#010X:”,**z); // note how we have three ways to dereference pointers here printf(“nw=%#010X:”,***w); // note how we have four ways to dereference pointers here printf(“na=%#010X:”,****a); // note how we have five ways to dereference pointers here printf(“nb=%#010X:”,*****b); // note how we have six ways to dereference pointers here printf(“nc=%#010X:”,******c); // note how we have seven ways to dereference pointers here … } #### exemplo usando referências c++ // header file #ifndef REFERENCES_H_ #define REFERENCES_H_ extern int x,y,z,w,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z; #endif /* REFERENCES_H_ */ // source file #include “references_h” int& r_x=x,r_y=y,r_z=z,r_w=w,r_a=a,r_b=b,r_c=c,r_d=d,r_e=e,r_f=f,r_g=g,r_h=h,r_i=i,r_j=j,r_k=k;r_l=l;r_m=m;r_n=n;r_o=o;r_p=p;r_q=q;r_r=r;r_s=s;r_t=t;r_u=u;r_v=v;r_w=w;r_x=x;r_y=y;r_z=z;R_A=A;R_B=B;R_C=C;R_D=D;R_E=E;R_F=F;R_G=G;R_H=H;R_I-I;R_J-J;R_K-K;R_L=L,R_M=M,R_N=N,R_O-O,R_P=P,R_Q-Q,R_R=R,R_S=S,R_T=T,U&U,V&V,W&W,X&X,Y&Y,Z&Z, r_x=r_y+r_z+r_w+r_a+r_b+r_c+r_d+r_e+r_f+r_g+r_h+r_i+r_j+r_k,+r_l*r_m/r_n/r_o/r_p/r_q/r_r/r_s/r_t/r_u/r_v/r_w/r_x/r_y/r_z,+r_A*r_B*r_C/d_r_D/d_r_E/d_r_F/d_r_G/d_r_H/d_r_I/d_r_J/d_r_K*d_r_L*d_r_M*d_r_N*d_r_O*d_r_P*d_r_Q*d_r_R/d_r_S/d_r_T/u/v/w/x/y/z+A+B+C+d_e+f*g*h*i*j*k+l*m*n/o*p*q*r*s*t*u*v*w*x*y*z+A+B+C*D+E+F/G/H/I/J/K/L*M+N/O/P/Q/R/S/T/U/V/W/X/Y/Z, //main function #include “references_h” void main() { printf(“%i,”,x);//note that we don’t need reference operators here because printf doesn’t modify values but prints them directly from memory addresses instead printf(“%i,”,y);//note that we don’t need reference operators here because printf doesn’t modify values but prints them directly from memory addresses instead printf(“%i,”,z);//note that we don’t need reference operators here because printf doesn’t modify values but prints them directly from memory addresses instead … } nubank/tracer<|file_sep*** old notes *** além do problema dos arquivos temporários serem armazenados na pasta /var/tmp mesmo depois que saímos do programa ainda temos outro problema sério aqui que é aquele erro de segurança em relação à inicialização dos arquivos temporários… vamos ver se conseguimos resolver esses problemas sem ter que mexer no código fonte da biblioteca [libbsd](https://github.com/freebsd/freebsd/tree/master/lib/libbsdtty). talvez seja possível criar uma biblioteca wrapper utilizando [libbsd](https://github.com/freebsd/freebsd/tree/master/lib/libbsdtty)… mas vamos tentar resolver primeiro usando apenas funções padrões POSIX. primeiro problema encontrado durante os testes foi um erro ao compilar o código fonte da biblioteca [libbsd](https://github.com/freebsd/freebsd/tree/master/lib/libbsdtty): erro ao compilar linha `#include_next` no arquivo `sys/ttycom.h` porque `gcc` não reconhece essa diretiva. depois disso encontrei outro erro relacionado ao uso dessa diretiva também no arquivo `sys/ttydev.h`. depois disso tentei remover essas duas linhas do arquivo `ttydev.h`, mas isso resultou em um novo erro relacionado à macro `_PATH_DEVNULL`: erro ao compilar linha `_PATH_DEVNULL` no arquivo `sys/ttydev.h`: undefined symbol `_PATH_DEVNULL`. resolvi esse problema criando um novo arquivo chamado `my_devnull.c` contendo apenas essa macro e incluí-lo antes de qualquer outro arquivo dentro do diretório sys/, assim ficou mais fácil identificar onde estava o erro e resolvê-lo. por último encontrei outro problema relacionado à diretiva `_PATH_DEVNULL`, agora no arquivo ttydev.c: erro ao compilar linha `_PATH_DEVNULL` no arquivo sys/ttydev.c porque há dois símbolos diferentes definidos com esse nome. para resolver esse último problema tentei criar uma nova macro chamada `_MY_PATH_DEVNULL` dentro do meu novo arquivo my_devnull.c e substituir todas as instâncias dessa antiga macro por essa nova macro dentro dos arquivos ttydev.c e ttycom.c… mas isso resultou em novos erros relacionados às macros `_PATH_TTY`, `_PATH_CONSOLE`, `_PATH_WTMP`, entre outras. então decidi procurar como essas macros são definidas dentro da biblioteca [libbsd](https://github.com/freebsd/freebsd/tree/master/lib/libbsdtty). descobri que elas são definidas pelo sistema operacional através das diretivas “ e “. então decidi tentar incluir esses arquivos antes de qualquer outro arquivo dentro do diretório sys/. mas isso só fez piorar os erros porque agora eu tinha muitas direivas conflitantes entre si como “ vs “ etc etc etc… enfim depois de muitas tentativas acabei optando por usar apenas funções padrões POSIX para resolver todos esses problemas. para resolver o primeiro problema referente aos arquivos temporários serem armazenados na pasta `/var/tmp` mesmo depois que saímos do programa decidi utilizar a função [mkstemp](http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkstemp.html). para resolver o segundo problema referente à inicialização dos arquivos temporários decidi utilizar a função [open](http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html). ## new notes ## criei um programa teste para verificar se minha implementação funciona corretamente ou não… ele está funcionando corretamente quando executado localmente… mas não estou conseguindo executá-lo remotamente via ssh sem dar erros… acho que tenho que configurar algo relacionado ao permissão dos usuários via ssh… ## new new notes ## finalmente consegui rodá-lo remotamente via ssh sem dar erros… agora preciso saber como configurar minha máquina local para rodá-lo remotamente via ssh também… ## new newer notes ## eu consegui configurar minha máquina local para rodá-lo remotamente via ssh também… agora preciso saber como configurar meu ambiente virtual linux vmware virtualbox para rodá-lo remotamente via ssh também… ## even newer notes ## eu configurei meu ambiente virtual linux vmware virtualbox pra rodá-lo remotamente via ssh também… agora preciso saber como configurar meu ambiente virtual linux docker pra rodá-lo remotamente via ssh também… ## newest notes ## eu configurei meu ambiente virtual linux docker pra rodá-lo remotamente via ssh também… agora preciso saber como configurar meu ambiente virtual linux vagrant pra rodá-lo remotamente via ssh também… ## even newest notes ## eu configurei meu ambiente virtual linux vagrant pra rodá-lo remotamente via ssh também… agora preciso saber como configurar meu ambiente virtual windows hyper-v pra rodá-lo remotamente via ssh também… ## latest notes ## eu configurei meu ambiente virtual windows hyper-v pra rodá-lo remotamente via ssh também… eu consegui fazer tudo funcionando corretamente tanto localmente quanto remotamente! agora vou tentar integrá-la ao projeto original! é importante noter que ela pode ser utilizada tanto localmente quanto remoto! *** todo *** verificar se ela funciona corretemente localmente ou remoto! verificar se ela funciona corretamente localmente ou remoto! *** todo done *** integrá-la ao projeto original! *** todo done *** criação da estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: estrutura base: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: implementação das funções principais: programa teste básico: programa teste básico: programa teste básico: programa teste completo: programa teste completo: função principal completa: compilação e execução locais: compilação e execução remota: compilação e execução remota: compilação e execução remota: compilação e execução remota: compilação e execução remota: compilação e execução remota: *** todo done *** configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais vmware virtualbox: configuração completa dos ambientes virtuais docker: configuração completa dos ambientes virtuais docker: configuração completa dos ambientes virtuais vagrant: configuração completa dos ambientes virtuais vagrant: configuração completa dos ambientes virtuais windows hyper-v:nubank/tracer<|file_sep<<<<<<<<<<>>>>>> this project was started as part of an initiative at nubank called hackthon nubank day! which took place on january first of year twenty eighteen. the goal was create a tool capable of tracing functions calls throughout an application. here you will find all information related to it including design decisions made along development process. for more information please visit https://www.nubank.com.br/hackthon/ </>
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    project overview 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    design decisions made along development process 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components 
    
    
    
    
    implementation details related project components
    
    
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    issues encountered during development process 
    
    
    notes taken throughout entire life cycle of project life cycle
    
    
    
    
    notes taken throughout entire life cycle of project life cycle
    
    
    
    
    notes taken throughout entire life cycle of project life cycle
    
    
    
    
    notes taken throughout entire life cycle of project life cycle
    
    
    
    
    notes taken throughout entire life cycle of project life cycle
    
    
    
    
    
    todo list created at start point of project start point
    
    
    
    
    
    todo list created at start point of project start point
    
    
    
    
    
    todo list created at start point of project start point
    
    
    
    
    
    todo list created at start point of project start point
    
    
    
    
    
    todo list created at start point of project start point
    
    
    
    
    
    
    done list created at end point after completing every task within todo list before starting next task
    
    
    
    
    
    
    done list created at end point after completing every task within todo list before starting next task
    
    
    
    
    
    
    done list created at end point after completing every task within todo list before starting next task
    
    
    
    
    
    
    done list created at end point after completing every task within todo list before starting next task
    
    
    
    
    
    
    
    
    </>
    project structure directory tree diagram showing layout directory structure used throughout entire lifecycle projects lifecycle.
    
    
    
    
    directory tree diagram showing layout directory structure used throughout entire lifecycle projects lifecycle.
    
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    initial planning phase started creating new git repository using github service hosted by company github inc.
    
    
    
    
    
    new git repository was initialized locally on computer running operating system ubuntu version seventeen ten inside directory named nubank-trace.
    
    
    
    new git repository was initialized locally on computer running operating system ubuntu version seventeen ten inside directory named nubank-trace.
    
    
    
    new git repository was initialized locally on computer running operating system ubuntu version seventeen ten inside directory named nubank-trace.
    
    
    
    
    
    remote origin remote url pointing towards newly created remote git repository hosted by company github inc was added locally.
    
    
    
    remote origin remote url pointing towards newly created remote git repository hosted by company github inc was added locally.
    
    
    
    
    
    local master branch was pushed remotely towards newly added remote origin branch.
    
    
    
    local master branch was pushed remotely towards newly added remote origin branch.
    
    
    
    
    
    first commit message describing initial state files contained within newly initialized empty local git repository was added locally followed immediately afterwards pushing these changes remotely towards newly added remote origin branch.
    
    
    
    first commit message describing initial state files contained within newly initialized empty local git repository was added locally followed immediately afterwards pushing these changes remotely towards newly added remote origin branch.
    
    
    
    
    
    
    
    
    
    commit messages describing every change committed locally were pushed remotely towards already existing remote origin branch until completion all tasks listed within previously defined todo lists.
    
    
    
    
    
    git log command output listing all commits performed since initial creation empty local git repository up until completion all tasks listed within previously defined todo lists.
    
    
    
    
    
    
    
    </>
    compiler version used compiling source code files contained within projects source code directory tree structure compiled against compiler version seven dot zero one dot zero released august