依据nodejs的http模块通过smartqq实现活动收发qq音之次第

做事管理十分重大

在工作中有些地方容易给忽略,例如对自身工作的管住能力。我直接相信的一点凡对准全局的把控和规划能力连无是不难之,并无是说一个设计师20寒暑做的是搬砖的干活,40年份就足以理所应当地开管理之做事了。有广大人便到了十分年纪,即使经验丰富,但是于管理地方还是时有发生那么些题目,这证明外极基础之,从平开始针对我的管理就是没有做好。所以我觉得,如果你当十年后想只要成为一个领导人员的角色,在就即令当一步一个脚印做好针对性好之干活管理。

或是是以作者所承受的成品跟团组织通力合作有关,所以我会花多时间去研究符合自己之做事管理和组织协作相关的组成部分软件。遗憾的是对此自之办事管理即无异片还尚无找到特别吻合自身心智模型的活,目前只是当印象笔记中列表整理,追踪的始末来:项目、负责人、每日进度、周进度、已好的筹划(需要进行复盘)。

稍许设计师或许会见觉得这些零碎的枝叶为什么还欲专门的软件来保管,为什么还用特地的合作下来进行联系。有这种想法的内需而当心自己有或正在成为一个请勿乐意上新东西之总人口。

已经自己耶依靠在团结记忆力好,上司给的门类可以铭记于心底,所有的细节还不见面落,但是工作长期了不畏见面发觉,这个会随着你奉之音讯越来越多,年岁底增高变得无法。我起来于小本本上记下这些,开始当记事本里记下这些,开始探寻可进行工作管理的软件,让好之做事尤其有系统,让大脑释放出有上空去举行有更要之事务。

呢略设计师或许会见以为好宁愿花重新多之年华错开做好计划,而未是研讨这些虚之事物。但实则增强自己的软实力能够为自己再次具有竞争力。

虽假设《google工作整理术》一开中涉嫌的:

“解决问题的法子不是越来越辛苦地干活,你自就够用烦了。你真想做的是更巧妙地干活——利用现有的工具和技能,绕开社会强加于咱的类制约。”

 

勿遗忘初心,方得始终

记十分久前的转账评审上发只评委问过自己一个题材:“为什么会怀念如果举行就卖工作?”

“看到有人在为此而设计出来的出品,是一样起十分有成就感的事体。”这是本人那儿之答应。

今日,几百只日子过去,经历过焦虑、麻木这样多杂陈的心气后,有同样龙,一个在北京做事之高校室友跟自家拉时关系:“豆丁,那个加班签到是匪是你们做的,我爱人围里有个体经常分享。”

视听这词话的瞬间,我备感到了相同种植跨时空空间的成就感,这种感觉的确很暧昧。

这还发出任何一个评委问了本人一个题材:“你才工作几乎个月,为什么ppt上面写在「设计道路艰险」,你更了啊为您勾勒起就词话?”

“这仗的单是本人中心对自好之宏图之一致栽要求。”这是自那时的对答。

现在,一告知成谶。在工作中真的遇到各种各样挫折:因为未熟悉业务而踩的坑、因为职责范围不清晰而坐的锅子、因为技法所限画不发出的想法、因周遭变动而发出的忧患、被盗用的办事战果、反复修改的设计稿、不负责任的队友、职场关系、工资倒挂。而我为直当检索答案。

每当那份转正答辩ppt的末尾一页上本人写了马上几乎独字「不忘怀初心,方得始终」。

本,身边发生好多彼此设计师从前做的是UI设计,也发生UI设计师在转岗,也产生同事内心蠢蠢欲动。我思说的凡,不论做的是互相、UI、甚至是成品,只要不忘怀当初吧底兴奋为的努力的特别初心,就无见面去不断前行的胆略。

  此post跟上述的并无尽要命的不同,但是如果小心option的path要转移了,以及content-length固定不移,option的代码如下,

立自己之知系统

于问自己长久以来也看了好多之修,遇到有实在问题也特别为难用自己拟过的学识去组织及发表;而且趁机年渐长,少年时过目不忘的本领退化成了过目就记不清;渐渐觉得自己每日举行着多的干活,没有艺术学到新的事物……

坐这些题目本身都大令人担忧很盲目,但日益发现立即同密密麻麻的题材都自于自己没有一样模拟上、组织、记忆的点子,思考问题也生表层,半了然半解方方面面吞枣。在打听及当时或多或少后头突然感到温馨之世界豁然开朗了。我当怀念,若是自一直没有参透这或多或少,或许工作再久,我还未曾道取重新多成长。

当发现立即一点随后,我起来做自身的场面尝试建立文化系统,并采用思维导图来进行梳理。这个知识系统一定不会见是永恒不变的。需要根据行业及本身之变动进行动态调整,并且不断向中间注入新的情节。

而自己开始将好已忽略的东西一点点捡拾起来,开始特别开掘工作受到相遇的一对微细节,从中获益匪浅。比如说:因为使用被控件体系混乱,和互动设计师对接出现一些题目,开始研究组件控件体系和android、iOS的正式,虽然事先为发出研究过,但还停于一个比较浅之圈;因为签到web端页面缺少专业遇到的题材去开研究ant
design和element,并且拟着发生了一致卖签到web端的设计规范;因为如果开工作汇报的文本排版而失去研究了晋级文本可读性相关的行高、段间距、对齐方式、颜色对比度等等因素。透彻地钻研,思考,组织,将其注入我的学问体系,最后表达,分享,最终沉淀为自己的事物。

足去上和思辨的物重重,任何一个小点都足以好开掘,甚至是平篇稿子里之一个名词。经常可以看看局部企划大v在设计网站及犯的文章其实说的也罢是片很小之触及,这些小点或许还是我们以统筹受到遇见过的题目,但她们能于这些细节被发觉题目,总结发生部分规律,同时还能拢出一致首文章,讲的是鞭辟入里头头是道,而你可只能当一旁想不服却以不得不服,根源就是在你从未仔细观察了,也疲乏为去领略、思考。

与其花时间看博首知乎,不如自己动手写一篇稿子。与其花时间去举行同样客华而不实的年终总结,不如理想对手中的逐条品类进行总结和归纳。日常工作吃碰到的坑是较一个好看的界面要难得得几近之财富。

至此,程序编的大半了,作为并无熟的noder,自然是发生不少缺点,也可望来大神能够指出。

相同年时间过去,又产生部分有点后生将冲来校园,又生出局部设计师将成明日黄花。

   重点在针对性响应的拍卖。当自己输入“开始24点”后小紫(机器人)会回这样同样段落话:”24触及开!数字(共有6种植解法):8,
8, 8, 5将以上数字加减乘除(+,-,*,/)得出24,并列出算式即可。如发送:24接触
(4-2)*12/1″,当自身回复正确后会回去:”很强悍!算式正确。增加100积分时数字(共有20种解法):9,
9, 3, 5将以上数字加减乘除(+,-,*,/)得出24,并列出算式即可。如发送:24接触
(4-2)*12/1″,我一旦举行的凡不利获取四只数字并避免其他消息烦扰,同时不克以没有得到信息,即无人互相时先后整个挂掉(会回来一个HTML网页),还要依据4独数字计算得出正确的字符串。

以下我就算结自己马上同年多之做事来发话一道UI设计师在初入职场需要看见的比技法更关键之一些东西,借以给子孙警示吧。

  接下是奉信息。

毫不吃浮躁之一时带来偏

每当是时代中在,我每每感到到焦虑。每天在需求间疲于奔命,做着多的劳作,终日忙碌却为总是庸碌;每天都见面发生新的词汇出现,隔一段时间设计风向就会见变换齐同一变,每天还设大力地读,才会看上去不吃这时代抛弃,然后再次拼命地忘记。日复一日,循环往复。

相信广大设计师遇到了还是在经历一样的窘境。尤其是初入门的设计师,经验尚浅,想如果读也不知先学哪里,听说最近C4D比较火所以学个C4D,听说设计师也只要知道点代码用学点css,听说最近全栈设计师很火所以我要是吗都懂…但是为什么学了这般多也感到更学越滥?

旋即是一个性急之秋,不要受这个时期带来偏。

以有着人数犹当追捧「全栈设计师」这个名词的时光,我们的做事并没有有多生之变,只来雨后春笋一般绝地而起的新培训班;当大多数总人口且以绘制2.5D插图、用C4D制作出有绚烂得撩人之海报之时节,仍然发生局部人坚持以好之作风领域磨砺。我们连年什么还惦记模仿,什么都想要明了,却最后什么还只能触到皮毛。

并无是说而莫是全栈设计师你就没有了出路,作为设计师,最重点的凡摸底自己,要发生和好之计划风格以及举世无双的筹划价值观,建立从自己之值壁垒,创造不可替代性。而你的价值壁垒一定非在风口上之部分名词,而介于手中的行事,眼中之社会风气,对细节之精雕细刻,对题目的合计领悟,对公理的汇总总结。

  步骤

碰巧毕业的眼前几年对一个丁的职场生涯来说是格外主要之等同段落时期,是奠基性的同等段子时日。曾经听一个生有更的设计师说罢,不仅仅在外部环境,你对第一份工作的千姿百态及热情会晤以好可怜程度及影响到你以后针对工作之回味,所以率先份工作是至关重要的。

我为了操作方便把它封装在了模块中。
var options = {
    host: "d1.web2.qq.com",
    method: "POST",
    path: "/channel/poll2",/*注意此处*/
    headers: {
        'Host': 'd1.web2.qq.com',
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
        'Accept': '*/*',
        'Accept-Language': 'en-US,en;q=0.5',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Referer': 'https://d1.web2.qq.com/cfproxy.html?v=20151105001&callback=1',
        'Content-Length': '395',/*我认为由于参数不同你们的不一定是395,自己抓包即可获得长度*/
        'Cookie': '',/*出于安全考虑隐去cookie*/
        'Connection': 'keep-alive'
    }
};

       6. 然后便ok了,当屏幕及面世send
ok时情绪还是蛮感动的,然后死鼓劲的报告学长,只放学长平信誉“你得发请求头要求其不做gzip压缩的”,遂删去Accept-Encoding。发送信息至此就算成功了。在是为某被我拿来做尝试的群说声抱歉,我不是故意水之。。

 

      在smartqq上接受信息之法则是连连post
poll2当有人发给你信息不时post就见面应,响应内容就是为接受内容。那么模拟它即可。

  1.   了解就需要发送两种植post请求,一凡表示发送信息的send_qun_msg2,可以观看于F12下蛋post信息挺详细,那么当nodejs中照本宣科即可。图片 1

    var http = require('http');
    exports.post = function (contents) {
        var options = {
            host: "d1.web2.qq.com",
            method: "POST",
            path: "/channel/send_qun_msg2",
            headers: {
                'Host': 'd1.web2.qq.com',
                'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
                'Accept': '*/*',
                'Accept-Language': 'en-US,en;q=0.5',
                'Content-Type': 'application/x-www-form-urlencoded',
                'Referer': 'https://d1.web2.qq.com/cfproxy.html?v=20151105001&callback=1',
                'Content-Length': contents.length,
                'Cookie': '',/*出于安全考虑隐去cookie*/
                'Connection': 'keep-alive'
            }
        };
        var req = http.request(options, function (res) {});
        req.write(contents);
        req.end();
    };
    

     

     

  1. 然而就类简单的代码实际上有过怪可怜之题材,这是自家已经收拾了得代码,但是以初期我之content并无是表面的参数,而是自己定义之一个JSON(如下

    var rr = {
        "group_uin": 4111913875,
        "content": "[\"开始24点\",[\"font\",{\"name\":\"宋体\",\"size\":10,\"style\":[0,0,0],\"color\":\"000000\"}]]",
        "face": 210,
        "clientid": 53156849,/*出于安全考虑隐去真实数字,换以同长数字*/
        "msg_id": 62220001,
        "psessionid": ""/*出于安全考虑隐去psessionid*/
    };
    

     

     

     

    ),但是传输老失败,后来了解学长,发现实际上传输的情连无是直接JSON,而欲经过URLencode加密,于是自己调用了nodejs自带的encodeURI函数把上述加密后传(),后就成

    var contents2 = encodeURI('r=' + JSON.stringify(rr));
    

     

     

     
    
  2. 可是立刻我哪怕碰见了其它一个题目,我的应是千篇一律堆放乱码,虽然于群里发送信息并不需要考虑响应,但是我post的法子必定是均等的,也就算表示自己受群里消息时也是同搁浅乱码,就重新别说处理了。这个问题约花了本人少上时间,一开始怀疑是charset,utf-8的题材,于是在请求头里各种变动(比如request.setCharacterEncoding(“utf-8”)),但是并没有就此,又怀疑smartqq用的素不是utf-8,一查是的(如下图)图片 2

  3. 下一场继续眷恋,这之间查阅了不少网站,比如(http://blog.csdn.net/zsr\_251/article/details/49993911)于是猜测问题在buffer的拼接上,几经周折尝试各种方法(如

    var buf=Buffer.concat(chunks,size);
     var str=iconv.decode(buf,'utf-8');
    

     

     

     
    

    )还是那个。

  4. 末尾打算于要求头信息一个一个剖析发现了这个

    'Accept-Encoding': 'gzip, deflate, br',
    

     

     

     
    

    乃寻求相关信息,发现(http://www.jb51.net/article/61721.htm)这个网站,尝试着解压了下响应体,如

    zlib.unzip(body, function (err, buffer) {
    console.log(buffer.toString());
    }) 
    

     

     

     
    

 

     
背景:2月1日咱们实验室的qq群引入了一个聊天机器人,可实现签到,打劫,玩游戏(如24碰,猜字谜等)等的效果,签到,打劫成功,游戏胜利(如24点对正确)可取得积分,寒假时没关注群所以开学时好不要积分,而任何同学都曾也富裕一样正在,尤其是某某学长积分还上十万之巨大,(签到同一潮100横,24触及对是100),遂疑惑,问之,学长称:无他,刷分耳。于是以4月9日,参考了产学长的思路(http://www.zhangzaizai.com/2017/02/08/xiaozi-helper/),便开始试着开发一个刷分的辅助。

  1. 自24接触算法开始,我当(http://www.99cankao.com/numbers/24game.php)网页上直接找到了计算24点的代码(如下图)![](https://images2015.cnblogs.com/blog/1036288/201704/1036288-20170422002936868-77582414.png),把输入的交互改成参数传入,并把返回值改成字符串后就可以直接用了,我把它封装在了calc模块中方便调用,代码如下。

    function tdisoper(f0, f1, f2, f3) {
    this[0] = f0;
    this[1] = f1;
    this[2] = f2;
    this[3] = f3;
    }
    disoper = new tdisoper("-", "+", "/", "*");
    function oper(f, m, n) {
    if (f === 3) return (m * n);
    if (f === 2) return (m / n);
    if (f === 1) return (parseFloat(m) + parseFloat(n));
    if (f === 0) return (m - n);
    }
    function tb(i1, i2, i4, i8) {
    this[1] = i1;
    this[2] = i2;
    this[4] = i4;
    this[8] = i8;
    }
    function valid(a,b,c,d) {
    var result = '';
    n = 1;
    b = new tb(a, b, c, d);
    k = 0;
    var output = "";
    for (i1 = 1; i1 <= 8; i1 *= 2)
    for (i2 = 1; i2 <= 8; i2 *= 2)
    for (i3 = 1; i3 <= 8; i3 *= 2)
    for (i4 = 1; i4 <= 8; i4 *= 2) {
    if ((i1 | i2 | i3 | i4) !== 0xf) continue;
    for (f1 = 0; f1 <= 3; f1++)
    for (f2 = 0; f2 <= 3; f2++)
    for (f3 = 0; f3 <= 3; f3++) {
    m = oper(f3, oper(f2, oper(f1, b[i1], b[i2]), b[i3]), b[i4]);
    if (Math.abs(m - 24) < 1e-5) {
    result = result + "((" + b[i1] + disoper[f1] + b[i2] + ")" + disoper[f2] + b[i3] + ")" + disoper[f3] + b[i4];
    if ((n !== 0) && (++k >= n)) return result;
    }
    m = oper(f1, b[i1], oper(f3, oper(f2, b[i2], b[i3]), b[i4]));
    if (Math.abs(m - 24) < 1e-5) {
    result = result + b[i1] + disoper[f1] + "((" + b[i2] + disoper[f2] + b[i3] + ")" + disoper[f3] + b[i4] + ")";
    if ((n !== 0) && (++k >= n)) return result;
    }
    m = oper(f3, oper(f1, b[i1], oper(f2, b[i2], b[i3])), b[i4]);
    if (Math.abs(m - 24) < 1e-5) {
    result = result + "(" + b[i1] + disoper[f1] + "(" + b[i2] + disoper[f2] + b[i3] + "))" + disoper[f3] + b[i4];
    if ((n !== 0) && (++k >= n)) return result;
    }
    m = oper(f1, b[i1], oper(f2, b[i2], oper(f3, b[i3], b[i4])));
    if (Math.abs(m - 24) < 1e-5) {
    result = result + b[i1] + disoper[f1] + "(" + b[i2] + disoper[f2] + "(" + b[i3] + disoper[f3] + b[i4] + "))";
    if ((n !== 0) && (++k >= n)) return result;
    }
    m = oper(f2, oper(f1, b[i1], b[i2]), oper(f3, b[i3], b[i4]));
    if (Math.abs(m - 24) < 1e-5) {
    result = result + "(" + b[i1] + disoper[f1] + b[i2] + ")" + disoper[f2] + "(" + b[i3] + disoper[f3] + b[i4] + ")";
    if ((n !== 0) && (++k >= n)) return result;
    }
    
                                }
                    }
    return result;
    
    exports.cal = function(a,b,c,d){
    return valid(a,b,c,d);
    };
    

     

     

  2. 处理响应体并发送,代码如下,注释基本解释清楚,如产生问题欢迎提问。

    var req = http.request(options, function (res) {
        res.on('data', function (body) {
            if (body.toString().search('<html>') === -1) {/*此处是为了避免长时间未收到数据导致程序直接崩溃*/
                var str;
                str = JSON.parse(body.toString());/*解析响应体为JSON格式*/
                console.log("接受消息  " + str.result[0].value.content);/*获得接受内容*/
                if (str.result[0].value.send_uin === 8888888/*此处出于安全考虑。。*/) {
                    var usethen;/*含有关键4个数字的字符串*/
                    if (str.result[0].value.content.length >= 6)/*避免无关信息干扰*/
                        usethen = str.result[0].value.content[5];
                    if (usethen!==undefined) {
                        var use = usethen.match(/\u89e3[^\n]*\u4ee5/g);/*利用正则表达式获取从'解'到'以'的字符串*/
                        var number;
                        if (use!==undefined)
                            number = use[0].match(/[0-9]/g);  /*利用正则获取4个重要数字*/
                        console.log("获得数字" + number);
                        if (number !== undefined) {
                            var result = calc.cal(number[0], number[1], number[2], number[3]);
                            console.log("得到结果" + result);
                            var reg = /["][^\n]*[",]/;
                            rr.content = rr.content.replace('开始24点', "24点 " + result);/*rr就是上面的rr*/
                            contents2 = encodeURI('r=' + JSON.stringify(rr));
                            contents2 = contents2.replace('+', '%2b');/*为什么有这四个,我要放在下面讲*/
                            contents2 = contents2.replace('+', '%2b');
                            contents2 = contents2.replace('+', '%2b');
                            contents2 = contents2.replace('+', '%2b');
                            post.post(contents2);
                        }
                    }
                }
            }
        });
        res.on('err', function (err) {
            console.log(err);
        })
    });
    req.write(contents);
    req.end();
    

     

    为什么自己只要写四只contents =
    contents.replace(‘+’,’%2b’)呢,因为encodeURI函数不会见转移加号等特殊字符,导致自家发送出的字符串一直无加号,这里而卡了自己瞬间。如产生双重好之方式,希望发生大神教与自身。

  3. 终极是轮询发送poll2的题材,我平开始一直有error显示write
    after
    end,后来意识是自我莫受req重新赋值,相当给要了晚连续write自然产生错,于是把赋值写以了轮询中。

  技术:我之后端平台是nodejs,其他框架不是仿照得那个深所以用最好底部的http模块来发送post请求。用公开传输信息之smartqq来作为post的接受端。