[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我的方案已经改善,初接触多线程,各种问题还不知道怎么处理,边学边改
  1. bbaa        1442 + 5     1.9/min
  2. vic2        1360 + 21    8.2/min
  3. codegay      429 + 5     1.9/min
  4. vic3           0 + 0     0.0/min
复制代码
1

评分人数

TOP

本帖最后由 bbaa 于 2017-7-21 17:38 编辑

回复 121# 523066680


    厉害了
    PS:
Post send:
getchangeforminutebytext 一分钟
getchangefortenminutebytext 十分钟
getchangeforhourbytext 一小时
getchangeforhalfhourbytext 半小时
获取图片
Get page:
imagetop [获取榜单]
imageminute
imagetenminute
imagehour
imagehalfhour

这么长的函数我要吐了....
可以获取内置的检测数据[采样时间固定....]
    我去加个10分钟和半小时的
    曲线图明天应该就能完成,数据采样应该是5分钟一次
  1. $change_d=array();
  2. $timestamp=time()-(int)$change["change"]["minute"]["last"]["Timestamp"];
  3. if ($timestamp>=60||count($change["change"]["minute"]["last"]["user"])==0) {
  4. if((int)$change["change"]["minute"]["last"]["Timestamp"]!==0) {
  5. foreach($change["change"]["minute"]["last"]["user"] as $key=>$value) {
  6. $change_d[$key]=(int)$json["Username"][$key]["Count"]-(int)$value;
  7. }
  8. arsort($change_d);
  9. unset($change["change"]["minute"]["done"]);
  10. $change["change"]["minute"]["done"]["user"]=$change_d;
  11. $change["change"]["minute"]["done"]["lastu"]=$change["change"]["minute"]["last"]["user"];
  12. }
  13. unset($change["change"]["minute"]["last"]);
  14. foreach($json["Username"] as $key=>$value) {
  15. $change["change"]["minute"]["last"]["user"][$key]=(int)$value["Count"];
  16. }
  17. $change["change"]["minute"]["last"]["Timestamp"]=time();
  18. }
  19. unset($change_d);
  20. $change_d=array();
  21. $timestamp=time()-(int)$change["change"]["hour"]["last"]["Timestamp"];
  22. if ($timestamp>=3600||count($change["change"]["hour"]["last"]["user"])==0) {
  23. if((int)$change["change"]["hour"]["last"]["Timestamp"]!==0) {
  24. foreach($change["change"]["hour"]["last"]["user"] as $key=>$value) {
  25. $change_d[$key]=(int)$json["Username"][$key]["Count"]-(int)$value;
  26. }
  27. arsort($change_d);
  28. unset($change["change"]["hour"]["done"]);
  29. $change["change"]["hour"]["done"]["user"]=$change_d;
  30. $change["change"]["hour"]["done"]["lastu"]=$change["change"]["hour"]["last"]["user"];
  31. }
  32. unset($change["change"]["hour"]["last"]);
  33. foreach($json["Username"] as $key=>$value) {
  34. $change["change"]["hour"]["last"]["user"][$key]=(int)$value["Count"];
  35. }
  36. $change["change"]["hour"]["last"]["Timestamp"]=time();
  37. }
  38. unset($change_d);
  39. $change_d=array();
  40. $timestamp=time()-(int)$change["change"]["tenminute"]["last"]["Timestamp"];
  41. if ($timestamp>=600||count($change["change"]["tenminute"]["last"]["user"])==0) {
  42. if((int)$change["change"]["tenminute"]["last"]["Timestamp"]!==0) {
  43. foreach($change["change"]["tenminute"]["last"]["user"] as $key=>$value) {
  44. $change_d[$key]=(int)$json["Username"][$key]["Count"]-(int)$value;
  45. }
  46. arsort($change_d);
  47. unset($change["change"]["tenminute"]["done"]);
  48. $change["change"]["tenminute"]["done"]["user"]=$change_d;
  49. $change["change"]["tenminute"]["done"]["lastu"]=$change["change"]["tenminute"]["last"]["user"];
  50. }
  51. unset($change["change"]["tenminute"]["last"]);
  52. foreach($json["Username"] as $key=>$value) {
  53. $change["change"]["tenminute"]["last"]["user"][$key]=(int)$value["Count"];
  54. }
  55. $change["change"]["tenminute"]["last"]["Timestamp"]=time();
  56. }
  57. unset($change_d);
  58. $change_d=array();
  59. $timestamp=time()-(int)$change["change"]["halfhour"]["last"]["Timestamp"];
  60. if ($timestamp>=1800||count($change["change"]["halfhour"]["last"]["user"])==0) {
  61. if((int)$change["change"]["halfhour"]["last"]["Timestamp"]!==0) {
  62. foreach($change["change"]["halfhour"]["last"]["user"] as $key=>$value) {
  63. $change_d[$key]=(int)$json["Username"][$key]["Count"]-(int)$value;
  64. }
  65. arsort($change_d);
  66. unset($change["change"]["halfhour"]["done"]);
  67. $change["change"]["halfhour"]["done"]["user"]=$change_d;
  68. $change["change"]["halfhour"]["done"]["lastu"]=$change["change"]["halfhour"]["last"]["user"];
  69. }
  70. unset($change["change"]["halfhour"]["last"]);
  71. foreach($json["Username"] as $key=>$value) {
  72. $change["change"]["halfhour"]["last"]["user"][$key]=(int)$value["Count"];
  73. }
  74. $change["change"]["halfhour"]["last"]["Timestamp"]=time();
  75. }
  76. option::set('bbaa_math_change',json_encode($change));
  77. /* Model_Change_Get End*/
复制代码
暴力复制法 懒得简化咯
1

评分人数

TOP

本帖最后由 bbaa 于 2017-7-22 13:11 编辑

回复 121# 523066680


    今晚出去玩,现在才完成收集
部分代码公布....
发现代码有疏漏,导致无法构成数组现以修复
  1. /* 如果在主项中已经没有这个用户,在数据中删除掉 End*/
  2. foreach($json["Username"] as $key=>$value) {
  3. If (time()-(int)$dataqx[$key]["Timestamp"]>=300) {
  4. $dataqx[$key]["Timestamp"]=time();
  5. if((int)Count($dataqx[$key]["data"])<12) {
  6. $dataqx[$key]["data"][Count($dataqx[$key]["data"])]=$value["Count"];
  7. } else {
  8. /* 对于data满12的一个处理 {*/
  9. $temp=Array(); //对foreach的处理机制做出应对
  10. foreach ($dataqx[$key]["data"] as $keyt=>$val) {
  11. if ((int)$keyt>0&&(int)$keyt<=12) {
  12. $temp[$key]["data"][Count($temp[$key]["data"])]=$val;
  13. }
  14. }
  15. Unset($dataqx[$key]["data"]);
  16. $dataqx[$key]["data"]=$temp[$key]["data"]; //合并
  17. Unset($temp);
  18. /* 对于data满12的一个处理 }*/
  19. //$dataqx[$key]["data"][Count($dataqx[$key]["data"])]=$value["Count"];
  20. unset ($count);
  21. }
  22. }
  23. }
  24. option::set('bbaa_math_text',json_encode($dataqx));
  25. /* Model:曲线图变化速度信息收集模块 End */
复制代码
悄悄告诉你我是隐藏的彩蛋,找到没奖

TOP

what ?
  1. bbaa:1701+79    79/min
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 bbaa 于 2017-7-22 16:45 编辑

回复 124# codegay


    ?admin 滑稽
开个玩笑....

TOP

回复 125# bbaa


    一定是你作弊刚好被我看到了。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 126# codegay


    恭喜你才对了
之前我改成了666666

TOP

回复 126# codegay


    这样不用开浏览器 不卡

TOP

回复 128# bbaa
对齐一下更好
  1. vic3        9254 + 100   8.9/min
  2. codegay     4446 + 11    1.0/min
  3. vic2        2451 + 0     0.0/min
  4. bbaa        1789 + -60   -5.3/min
复制代码

TOP

回复 129# 523066680


    曲线图静态版本出来了,你不去看看么?

TOP

本帖最后由 bbaa 于 2017-7-22 17:09 编辑

回复 129# 523066680

    图片是白色背景,这里因为透明通道alpha的原因变黑....
   
    http://bbaass.tk/math/?page=change-ipage
2

评分人数

TOP

本帖最后由 523066680 于 2017-7-22 17:22 编辑

回复 130# bbaa


    相当不错。相信你也借此项目锻炼了不少技能。

折线的颜色你可以建立一个色彩分明的颜色列表,不然有些颜色相近。

TOP

回复 132# 523066680


    完全random
建议不错,刚才在和happy聊
你也不是在练习多线程吗

TOP

本帖最后由 523066680 于 2017-7-23 12:52 编辑

从零创建起来的图表,还未完善,费力+真心难看。
  1. =info
  2.     Auth: 523066680
  3.     Date: 2017-07
  4. =cut
  5. use JSON;
  6. use Encode;
  7. use Try::Tiny;
  8. use Data::Dumper;
  9. use Time::HiRes qw/time sleep/;
  10. use IO::Handle;
  11. STDOUT->autoflush(1);
  12. use threads;
  13. use threads::shared;
  14. use OpenGL qw/ :all /;
  15. use OpenGL::Config;
  16. #use Font::Freetype;
  17. use LWP::UserAgent;
  18. our $user    = "vic3";
  19. our $website = 'http://bbaass.tk/math/';
  20. our ($user, $website, $headers);
  21. our $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0', timeout => 3 );
  22. our %ucolor :shared;
  23. our $users :shared;
  24. #使共享变量支持复合数据结构
  25. print "Loading data...";
  26. make_user_struct();
  27. print "Done\n";
  28. our $SIZE_X = 800;
  29. our $SIZE_Y = 800;
  30. our $WinID;
  31. threads->create( \&getData, 1);
  32. &Main();
  33. my $count = 0;
  34. my $delta;
  35. my $speed;
  36. my $time_a = time();
  37. INFORMATION:
  38. {
  39.     sub getData
  40.     {
  41.         our ($ua, $website, $user);
  42.         my $res;
  43.         my $data;
  44.         my $info;
  45.         my $json = JSON->new->allow_nonref;
  46.         $SIG{'BREAK'} = sub { threads->exit() };
  47.         $res = $ua->post( $website, [ username => $user, send => 'reg' ] );
  48.         while (1)
  49.         {
  50.         SUBW: while (1)
  51.         {            
  52.             $res = $ua->post( $website, [ username => $user, send => 'user' ] );
  53.             try { $data = $json->decode( $res->content ); last SUBW; }
  54.             catch { sleep 2.0; printf "repeat\n" }
  55.         }
  56.         for my $e ( @{$data->{'user'}} )
  57.         {
  58.          ( $times, $name, $state ) = @$e;
  59.             push @{$users->{$name}}, $times;
  60.         }
  61.         
  62.         sleep 2.0;
  63.     }
  64.     }
  65.     sub make_user_struct
  66.     {
  67.     our ($ua, $website, $user);
  68.     my $data;
  69.     my $json = JSON->new->allow_nonref;
  70.         while (1)
  71.         {
  72.             $res = $ua->post( $website, [ username => $user, send => 'reg' ] );
  73.             $res = $ua->post( $website, [ username => $user, send => 'user' ] );
  74.             try { $data = $json->decode( $res->content ); last; }
  75.             catch { sleep 2.0; printf "retry\n" }
  76.         }
  77.         my @colors = (
  78.          [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.5, 1.0],
  79.          [1.0, 1.0, 0.0], [0.0, 1.0, 1.0], [1.0, 0.0, 1.0],
  80.          [1.0, 1.0, 1.0],
  81.          );
  82.         my $hash;
  83.         for my $e ( @{$data->{'user'}} )
  84.         {
  85.          ( $times, $name, $state ) = @$e;
  86.             $hash->{$name} = [ $times ];
  87.         }
  88.         #建立颜色信息
  89.         my $n = 0;
  90.         for my $name ( sort keys %$hash )
  91.         {
  92.          $ucolor{$name} = shared_clone( $colors[$n++] );
  93.     }
  94.         $users = shared_clone( $hash );
  95.     }
  96. }
  97. OPENGL:
  98. {
  99.     sub display
  100.     {
  101.         glClear(GL_COLOR_BUFFER_BIT);
  102.         glColor3f(1.0, 1.0, 1.0);
  103.         glBegin(GL_LINES);
  104.             glVertex3f(-200.0, 0.0, 0.0);
  105.             glVertex3f(200.0, 0.0, 0.0);
  106.             glVertex3f(0.0, -200.0, 0.0);
  107.             glVertex3f(0.0, 200.0, 0.0);
  108.         glEnd();
  109.         my $ty = 0;
  110. for my $name ( sort keys %ucolor )
  111. {
  112. glColor3f( @{$ucolor{$name}} );
  113. glRasterPos2i(-10, $ty);
  114. printstr( $name );
  115. $ty+=2;
  116. }
  117.         my $obj;
  118.         for my $name ( keys %$users )
  119.         {
  120.          $obj = $users->{$name};
  121.          glColor3f( @{$ucolor{$name}} );
  122.         glBegin(GL_LINE_STRIP);
  123.         for my $v ( 1 .. $#{$obj} )
  124.         {
  125.             glVertex3f( $v, $obj->[$v] - $obj->[0], 0.0 );
  126.         }
  127.         glEnd();
  128.     }
  129.         glutSwapBuffers();
  130.     }
  131.     sub init
  132.     {
  133.         glClearColor(0.0, 0.0, 0.0, 1.0);
  134.     }
  135.     sub idle
  136.     {
  137.         sleep 0.1;
  138.         glutPostRedisplay();
  139.     }
  140.     sub Reshape
  141.     {
  142.         my $half = 100.0;
  143.         glViewport(0.0,0.0, $SIZE_X, $SIZE_Y);
  144.         glMatrixMode(GL_PROJECTION);
  145.         glLoadIdentity();
  146.         glOrtho(-20.0, $half, -20.0, $half,-20.0,200.0);
  147.         glMatrixMode(GL_MODELVIEW);
  148.         glLoadIdentity();
  149.         gluLookAt(0.0,0.0,100.0,0.0,0.0,0.0, 0.0,1.0,100.0);
  150.     }
  151.     sub hitkey
  152.     {
  153.         my $key = shift;
  154.         if (lc(chr($key)) eq 'q')
  155.         {
  156.             glutDestroyWindow($WinID);
  157.         }
  158.         elsif ($key == 27)
  159.         {
  160.             glutDestroyWindow($WinID);
  161.         }
  162.     }
  163.     sub Main
  164.     {
  165.         glutInit();
  166.         glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE |GLUT_MULTISAMPLE );
  167.         glutInitWindowSize($SIZE_X, $SIZE_Y);
  168.         glutInitWindowPosition(1,1);
  169.         our $WinID = glutCreateWindow("Show");
  170.         &init();
  171.         glutDisplayFunc(\&display);
  172.         glutReshapeFunc(\&Reshape);
  173.         glutKeyboardFunc(\&hitkey);
  174.         glutIdleFunc(\&idle);
  175.         glutMainLoop();
  176.     }
  177.     sub printstr
  178.     {
  179.         for my $i ( split("", $_[0]) )
  180.         {
  181.             #glutBitmapCharacter(GLUT_BITMAP_9_BY_15, ord($i));
  182.             glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, ord($i));
  183.         }
  184.     }
  185. }
复制代码

TOP

本帖最后由 老刘1号 于 2017-7-23 12:34 编辑

这题……让我复习了HTTP POST。
不过学会了二分法~

TOP

返回列表