分类 默认分类 下的文章

用我专注之心,用真诚的态度记录个人成长与社会发展的五十年!(2020.02.17~2070.02.17)!

我相信,恒心足以改变世界!

生活杂谈
2020.02.16夜里是我这一生中最重要的一夜了,躺在床上睡不着觉。翻开曾国藩家书,看了几章。曾国藩的书信里,一直都在讲勤、恒,谦这些美德,自己看了许多次,每次看总会感慨很多,看完好像找到了真理,过几天却又把这些美德忘记。总是缺少一个勤字。于是决定开始写日记。

我也曾经写过博客,09年到20年这十一年间,在csdn写过几年技术博客,新浪写过生活博客,发现这些博客太过于“中心化”和强权化,都曾因为各种小问题比如认证、发文章过多的事情,拉黑过我的博客。后来自己买域名服务器,在海外搭了博客,总算逃脱国内这些强权的运营商。写的博客断断续续,没有名气,没有流量。有时是读书笔记,有时生活随笔,有时鸡毛蒜皮的小事。

而今天我决定开始写日记了,而且是日更。早在两年前就听说过日更,头次听说感觉压力好大,哪有时间写作。可是后来了解了曾国藩、蒋介石、毛泽东,柳比歇夫,这些人都是写日记的高手。难道他们都不忙么?这肯定不是!而这也算是他们的毅力所在,也是他们之所以为神人的原因。

我写日记的初衷有以下几个:一是锻炼自己的恒心,曾国藩说“勤奋与恒心是人最宝贵的素质”,我需要磨炼自己的恒心,笔记就挺好;二是锻炼自己的写作能力,自己一直想拿着笔杆子写点东西,毕竟我曾经作文极好,年级范文的那种,不听语文课高考语文143的那种学霸,写作是我曾经的梦想~万一要实现了呢;三是要做中国的阿甘,日更五十年,做影响中国乃至世界的人,用恒心见证和改变这个世界。

时间记录
日更五十年项目启动。2.3 小时

编写区块链起源。3小时

锻炼身体:100 俯卧撑 42个单腿深蹲。 0.5小时

疫情严重。村里不让随便进出,需要办出入证。

年初五的时候就已经让办了,那时候只要登记下就能办。

当时太懒,再加上疫情泛滥,出去怕感染,于是自己在家呆着没去办。

今天周六,下周一要上班了,才拖着现在去办。

骑车到村口,村口在消毒,机器声音太吵。

我大声咨询,一位工作人员说:“现在不给办!先找物业管片。 ”

骑着车子回到小区。

小区大姐说:“ 去村委会问吧 ,我们没有管片电话!”

我又骑车到村委会,村里没多少人

看到我来了,一个保安中断了跟其他人的聊天,探着头问:“ 干嘛的”

我:“ 办出入证。 ”

保安:“ 不给办 ”

我:“ 我回来快一个月了 ”

保安:“ 那你去里面的办公楼问问 ”

我进了一个楼里,一胖子很不耐烦,问:“ 办什么的 ”

我:“ 办出入证,我回来快一个月了 ”

胖子:“ 找你们管片 ”

我:“ 我们物业不知道管片电话,让来村委会问 ”

胖子:“ 那让你们物业过来 ”

我拨了物业电话:“ 村委会让问你们,要你们过来 ”

物业:“ 管片下午来物业,你下午过物业看看吧 ”

我只好回家。

回来看门口贴的村委会的工作人员电话。

我拨了号码。

“我是xx小区的,办出入证,我不知道我们管片是谁”

“问你们小区物业吧!他们肯定知道”

“他们不知道”

“那你找物业经理”

。。

最后皮球又提到物业。

我又去物业。

物业大妈终于松口了,给旁边的保安嘀咕:

“你给那管片联系下吧,让她过来吧”

我心里一万个草泥马飞起。。。

站在物业门口,在西北风里站了半个小时

一大姐过来了,进物业办公室,一堆抱怨、安排工作。

安排完了,终于喊我过去:

“只能给你自己办,你媳妇不行”

“为啥”

“她没签保证书呢”

“可是当时没让她签啊”

“当时是当时,现在是现在”

“我这还手机短信呢,我俩的信息都给您发了,你那时候也没让她签”

看我拿出了短信,她意识到时自己工作失误,拿出一张新保证书

“你给她签下吧,按当时日期算”

签完,物业大哥带着我去村口办出入证。

村口的办事员仔细看了保证书,大声嚷嚷道:“不给办,不给办”

“为啥”我和物业大哥都傻眼了,旁边一个工作人员也凑过来问。

“签的日期是2.8,现在是2.15,还没到14天”

我:“可是我回来日期是1.28啊!”

办事员继续嚷嚷:“那我可不管,我只认签署日期!”

这次我已经淡定很多了,不多言语。一是不能公开顶撞办事人员,指不定马上被拉走拘留呢,二是我习惯了这种踢皮球、瞎扯淡的风格了。

回到物业,我拍了签署保证书的照片,就当给公司发邮件用的证明。

前后将近三个小时,最后什么都没办成!还是要等到下周才能去办出入证。

本来自己是响应政策,“自我隔离”不出门,结果这么多天的“自我隔离”不算数了,还不如早点去办个出入证划算!政策真是一天一个样,凡事要趁早!

10℃以上

下身:七分裤。
上身:长袖衣衫,或者穿短袖衣衫配上手臂护套。
配件:一件轻便的棒球帽风格帽子。

1-10℃

下身:七分裤或者四分之三长的紧身裤。可选长紧身裤或者普通裤。
上身:套上两层长袖衣衫,或者穿一层,外加一件防风上衣。
配件:一个无檐小便帽,薄手套。

零下1-6℃

下身:拉过绒的紧身衣或裤子,盖住任何裸露在外面的肌肤。
上身:穿两层长袖,或者穿一个长袖外加薄层和薄夹克。再或者,除按上述的厚一些的版本。
配件:无檐小便帽,厚手套。太阳镜保护寒冷阵风中的眼睛(在阴天的时候考虑一下清晰的镜片)

零下18-零下6℃

下身:防水材料的,拉过绒的绝缘抗风紧身衣或裤子,长袜子。
上身:塞到裤子里的长袖,或一个中间层来保暖你的脖子,外加一个绝缘体夹克。
配件:一条围巾围住你的脖子,甚至围住你的脸颊和嘴。一个暖和的无檐小便帽可以盖住你的耳朵,一个大小合适的厚手套和太阳镜。

零下18℃以下

伙计,那你不是在开玩笑?还是去跑步机上练习吧!

一、起因

一到年底,各大网站又开始组织评选各种最佳XX,比如新浪组织的2015十大跑团投票。昨日在跑步群里,组织的领袖人物号召大家去投票,于是好多人都投了,后来又过了一会,领袖又出来无奈的说,大家每人投1000票吧,瞬间集体崩溃,原来投票还可以这么玩!

于是仔细研究了下这个网站投票,抓包发现,其所为的投票就是一个普通的HTTP GET 请求,没有缓存,没有认证,没有限制,我真无语了,这还是新浪网站做的网页呢,这尼玛是实习生做的吧?最基本的验证、防刷票都没有。
而前面几名小跑团竟然都跟我XX大跑团差距几十万的投票量了,这些明显都是在刷票!而且是软件自动刷的!太气愤了。

二、行动

于是决定做个投票器,刷!刷!刷!帮助XX大跑团刷!帮助XX大跑团刷!帮助XX大跑团刷!

首先下载libcurl,编译生成静态库。

其次在网上找了个基于libcurl的HttpClient源码,如下

define HTTP_CURL_H

include

class CHttpClient
{
public:

CHttpClient(void);
~CHttpClient(void);

public:

int Post(const std::string & strUrl, const std::string & strPost, std::string & strResponse);
int Get(const std::string & strUrl, std::string & strResponse);
int Posts(const std::string & strUrl, const std::string & strPost, std::string & strResponse, const char * pCaPath = NULL);
int Gets(const std::string & strUrl, std::string & strResponse, const char * pCaPath = NULL);

public:

void SetDebug(bool bDebug);

private:

bool m_bDebug;

};

endif

include

include "stdafx.h"

include "HttpClient.h"

include "curl/curl.h"

include "curl/easy.h"

CHttpClient::CHttpClient(void) : m_bDebug(false)
{

}

CHttpClient::~CHttpClient(void)
{

}

static int OnDebug(CURL , curl_infotype itype, char pData, size_t size, void *)
{

if (itype == CURLINFO_TEXT)
{
    //printf("[TEXT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_HEADER_IN)
{
    printf("[HEADER_IN]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_HEADER_OUT)
{
    printf("[HEADER_OUT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_DATA_IN)
{
    printf("[DATA_IN]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
else if (itype == CURLINFO_DATA_OUT)
{
    printf("[DATA_OUT]{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\n", pData);
}
return 0;

}

static size_t OnWriteData(void buffer, size_t size, size_t nmemb, void lpVoid)
{

std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);
if (NULL == str || NULL == buffer)
{
    return -1;
}

char* pData = (char*)buffer;
str->append(pData, size * nmemb);
return nmemb;

}

int CHttpClient::Post(const std::string & strUrl, const std::string & strPost, std::string & strResponse)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strPost.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Get(const std::string & strUrl, std::string & strResponse)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
/**
* 当多个线程都使用超时处理的时候,同时主线程中有sleep或是wait等操作。
* 如果不设置这个选项,libcurl将会发信号打断这个wait从而导致程序退出。
*/
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Posts(const std::string & strUrl, const std::string & strPost, std::string & strResponse, const char * pCaPath)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (curl == NULL)
{
    return -1;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strPost.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
if (NULL == pCaPath)
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
}
else
{
    //缺省情况就是PEM,所以无需设置,另外支持DER
    //curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_easy_setopt(curl, CURLOPT_CAINFO, pCaPath);
}
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

int CHttpClient::Gets(const std::string & strUrl, std::string & strResponse, const char * pCaPath)
{

CURLcode res;
CURL* curl = curl_easy_init();
if (NULL == curl)
{
    return CURLE_FAILED_INIT;
}
if (m_bDebug)
{
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, OnDebug);
}
curl_easy_setopt(curl, CURLOPT_URL, strUrl.c_str());
curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&strResponse);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
if (NULL == pCaPath)
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
}
else
{
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_easy_setopt(curl, CURLOPT_CAINFO, pCaPath);
}
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
return res;

}

///////////////////////////////////////////////////////////////////////////////////////////////

void CHttpClient::SetDebug(bool bDebug)
{

m_bDebug = bDebug;

}

include "stdafx.h"

include <windows.h>

include "HttpClient.h"

int _tmain(int argc, _TCHAR* argv[])
{

long long int s_count = 0;
while (true)
{
    Sleep(100);
    CHttpClient client;
    std::string url = "http://survey.sina.cn/aj/submit?poll_id=xxxx&q_xxx=xxx";

    std::string respon;
    client.Get(url, respon);
    size_t pos = respon.find("true");
    printf("You are vote to XXXTeam {b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}lld times.result:{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\r\n", ++s_count, (pos == std::string::npos) ? "ERROR" : "OK");
    printf("respon:{b75a474a571334bb08f4db31fa80d7688c6401b1dcf97fb55e06ed241b59472c}s\r\n", respon.c_str());
    printf("\r\n");
}

return 0;

}
三、放大招

OK,再写个小test程序,一秒刷10次。后来测试发现,不管一秒请求多少次,貌似服务器每秒只接收一次,或者是同一个ip只接收一次。

好了,挂了一夜,票数直线上升,将近升了一半。

零、总则
市场只有横盘和单边两种形态,在横盘和单边时候都做波段,吃其中的某一个波段,最长持8*4H=32小时的波段。通过4H看趋势,下降、上升、横盘。理论上只有在趋势转换的时候,才会亏损。

一、入场
在创新高的价格第一次回撤时买入,在价格创新低第一次反弹的时候沽空。4H看趋势,确定趋势后,5M找反弹入场。

二、出场
入场后吃足一个波段(8*4H),创新低或者创新高了则退场,不贪多,不嫌少。

三、止损、止盈
止损在当前点与上一个波的最高点(最低点)中间,止盈是在新高点或者新低点。吃足波段。

四、胜算概率
止损和止盈的点数基本相同,只要提高入场准确率,肯定是会有盈利的。