void dump_record(const as_record* p_rec) { if (! p_rec) { info(" null as_record object"); return; } if (p_rec->key.valuep) { char* key_val_as_str = as_val_tostring(p_rec->key.valuep); info(" key: %s", key_val_as_str); free(key_val_as_str); } uint16_t num_bins = as_record_numbins(p_rec); info(" generation %u, ttl %u, %u bin%s", p_rec->gen, p_rec->ttl, num_bins, num_bins == 0 ? "s" : (num_bins == 1 ? ":" : "s:")); as_record_iterator it; as_record_iterator_init(&it, p_rec); while (as_record_iterator_has_next(&it)) { dump_bin(as_record_iterator_next(&it)); } as_record_iterator_destroy(&it); }
int WINAPI iso_patch_byte(int iso_type, char *iso_file, int need_ecc_edc, int iso_offset, char *patch_buf, int patch_bytes) { int nRet; char *pTmpFile = "$$$patch.$$$"; nRet = dump_bin(pTmpFile, patch_buf, patch_bytes); if (nRet < 0) return PATCH_ERR_TEMPFILE; nRet = iso_patch_file(iso_type, iso_file, need_ecc_edc, iso_offset, pTmpFile); _unlink(pTmpFile); return nRet; }
main(int argc, char**argv) { lgopen(argc,argv); char *fname_inerr[5]; int nscores=0; int nweights=0; double weights[100]; char *fname_qualify=NULL; int nloops=10000; int copt=1; int i; for(i=1;i<argc;i++) { int rc=score_argv(argv+i); if(rc>0) { i+=rc-1; continue; } if(!strcmp(argv[i],"-le")) fname_inerr[nscores++]=argv[++i]; else if(!strcmp(argv[i],"-lew")) weights[nweights++]=atof(argv[++i]); else if(!strcmp(argv[i],"-se")) fname_outerr=argv[++i]; else if(!strcmp(argv[i],"-sq")) fname_qualify=argv[++i]; else if(!strcmp(argv[i],"-l")) nloops=atoi(argv[++i]); else if(!strcmp(argv[i],"-c")) copt^=1; else if(!strcmp(argv[i],"-a")) aopt=1; else if(!strcmp(argv[i],"-lm")) load_model=1; else if(!strcmp(argv[i],"-sm")) save_model=1; else { lg("Unrecognized argument %d %s ?\n",i,argv[i]); lg("-le <fname> - load precomputed error file.\n"); lg("-lew <weight> - In case of several -le, use wrights, instead of fit\n"); lg("-se <fname> - store resulted error file.\n"); lg("-l <n> - number of training loops to perform\n"); lg("-a - Perform training also on probe data\n"); lg("-c - Dont clip scores to be between 0...4\n"); lg("-sq <fname> - write qualifying submission to file.\n"); lg("-lm - load precomputed model.\n"); lg("-sm - save computed model.\n"); exit(0); } } if(fname_qualify && !aopt) lg("WARNING: -sq without -a\n"); if(fname_qualify && !copt) lg("WARNING: -sq with -c\n"); if(nweights && nscores && nweights!=nscores) lg("Number of weights %d (-lew) does not match number of files %d (-le)\n",nweights,nscores); load_bin(useridx_path,useridx,sizeof(useridx)); { int count[4],u,k; ZERO(count); for(u=0;u<NUSERS;u++) for(k=1;k<4;k++) count[k]+=useridx[u][k]; lg("Train=%d Probe=%d Qualify=%d\n",count[1],count[2],count[3]); } load_bin(userent_path,userent,sizeof(userent)); if(nscores) { if(nscores==1) load_bin(fname_inerr[0],err,sizeof(err)); else if(nweights) loadmix(fname_inerr,nscores,weights); else loadmix(fname_inerr,nscores,NULL); } else { int i; for(i=0;i<NENTRIES;i++) err[i]=(userent[i]>>USER_LMOVIEMASK)&7; globalavg(); } if(copt) cliperr(); rmse_print(copt); // if(nloops) { score_setup(); if(copt) cliperr(); rmse_print(copt); } int loop; int rc=1; for(loop=0;loop<nloops;loop++) { lg("Loop %d\n",loop); clock_t t0=clock(); if(!score_train(loop)) break; lg("%f sec\n",(clock()-t0)/((double)CLOCKS_PER_SEC)); if(copt && !dontclip) cliperr(); dontclip=0; rmse_print(copt); } if(fname_outerr) dump_bin(fname_outerr,err,sizeof(err)); if(fname_qualify) { FILE *fp=fopen(fname_qualify,"w"); char *qualify_path="data/qualify.bin"; unsigned int *qualify=malloc(NQUALIFY_SIZE*4); load_bin(qualify_path,qualify,NQUALIFY_SIZE*4); unsigned int *q=qualify; while (q<(qualify+NQUALIFY_SIZE)) { int m=*q++; fprintf(fp,"%d:\n",m+1); int l=*q++; int j; for(j=0;j<l;j++) { int u=*q++; int base2=useridx[u][0]+useridx[u][1]+useridx[u][2]; int d2=+useridx[u][3]; int k; for(k=0;k<d2;k++) { if((userent[base2+k]&USER_MOVIEMASK) == m) break; //lg("%d\n",userent[base2+k]&USER_MOVIEMASK); } if(k==d2) error("Bad qualify %d %d\n",m,u); fprintf(fp,"%.1f\n",8.-err[base2+k]); } } fclose(fp); } }