分类 学习笔记 下的文章

前段些天发现每过一段时间电脑的时间总会出现一些误差,之前总是使用自带的授时服务器(ntp)进行更新,但是经常遇到更新失败的问题,后来听liangke说他都是使用国家授时中心的ntp服务,由于是国内网络连接比较好,很快就可以同步完成。就决定也使用国内的ntp服务。

那天,想到自己手上一直荒废的域名 t.hm ,似乎还比较合适,就解析了过去。你还别说,效果还不错呢。

后来又做了个显示时间的页面 https://www.t.hm
其中使用了JQuery的AJAX和定时任务两非常实用的功能,就记在这里,说不定还用的上的。

这里主要用了两个插件:dayjs 和 jquery。

哦,还有一个很奇葩的BUG,Safari浏览器不支持解析yyyy-mm-dd格式的时间,所以需要修改时间格式(我这里用的是/代替的-)。

<script>
    // 初始化时间变量
    var localTime;

    getServerTime();
    setInterval(getServerTime, 10 * 60 * 1000); 

    // 每秒更新本地时间显示
    setInterval(updateLocalTime, 1000);

    // 函数:获取服务器时间
    function getServerTime() {
        $.ajax({
            url: 'time.php',
            type: 'GET',
            success: function(response) {
                setLocalTime();
            },
            error: function() {
                // 处理请求失败的情况
            }
        });
    }

    // 设置服务器时间为当前时间
    function setLocalTime() {
        if (serverTime) {
            localTime = new dayjs(serverTime);
        }else{
            console.log('serverTime:'+serverTime);
        }
    }

    // 函数:更新本地时间显示
    function updateLocalTime() {
        if (localTime) {
            tmp = dayjs(localTime).format('YYYY-MM-DD HH:mm:ss ZZ');
            $('#time').text(tmp);
            $("#title").text(tmp+' - t.hm 授时服务');
            localTime = dayjs(localTime).add(1,'s');
        }
        //console.error('localTime:'+localTime);
    }
</script>

本来想要随便放一个小视频的,结果丢上去之后各个浏览器显示结果很不一样,折腾了半天算了稍微顺眼一点点,为了防止以后再遇到,就放这里做个笔记,说不定什么时候又用的上呢。

    <script type="text/javascript">
        var ww = $(window).width();
        var hh = $(window).height();

        var video = $('#myVideo');

        video.on('loadedmetadata', function() {
            var videow = video.prop('videoWidth');
            var videoh = video.prop('videoHeight');
            var nn = videow/videoh;
            var xw = xh = 0;

            if(ww>videow && hh>videoh){
                xw = videow * 0.9;
                xh = videoh * 0.9;
            }else if(ww/hh > nn) {
                xh = hh * 0.6;
                xw = xh * nn;
            }else{
                xw = ww * 0.95;
                xh = xw / nn;
            }
            video.width(xw);
            video.height(xh);
        });
    </script>

人类主要拥有至少七种表情:

  • 高兴:人们高兴时的面部动作包括:嘴角翘起,面颊上抬起皱,眼睑收缩,眼睛尾部会形成“鱼尾纹”。
  • 伤心:面部特征包括眯眼,眉毛收紧,嘴角下拉,下巴抬起或收紧。
  • 害怕:害怕时,嘴巴和眼睛张开,眉毛上扬,鼻孔张大。
  • 愤怒:这时眉毛下垂,前额紧皱,眼睑和嘴唇紧张。
  • 厌恶:厌恶的表情包括嗤鼻,上嘴唇上抬,眉毛下垂,眯眼。
  • 惊讶:惊讶时,下颚下垂,嘴唇和嘴巴放松,眼睛张大,眼睑和眉毛微抬。
  • 轻蔑:轻蔑的著名特征就是嘴角一侧抬起,作讥笑或得意笑状。

常见微表情解析:

  1. 单肩抖动——不自信时候更容易单肩抖动(并不是所有的单肩抖动就是不自信)。
  2. 注视对方眼睛——人在准备好谎言时,更容易注视对方眼睛,已使对方相信或观察对方是否相信。(并不是注视对方眼睛就是撒谎)
  3. 回答时生硬的重复问题——回答时生硬的重复问题很有可能是典型谎言。
  4. 把手放在眉骨之间——当人感到羞愧的时候,很可能出现的动作是把手放在眉骨或者是额骨附近,用来建立一个视觉阻碍。
  5. 揉鼻子——掩饰真相(男人的鼻子里的海绵体在撒谎时容易痒)。
  6. 眼睛向左看是在回忆,向右看是在思考谎话。
  7. 惊讶表情超过一秒就是假惊讶。
  8. 男人右肩微耸一下就是在说假话。
  9. 用手抚额头——表示羞愧。
  10. 瞳孔放大——恐惧,愤怒,性欲。
  11. 话语重复声音上扬——撒谎。
  12. 肢体阻抗向后退一步,表示刚说的话不可信。
  13. 抿嘴经典的模棱两可的动作。
  14. 摸脖子人撒谎的时候会摸脖子,典型的强迫行为 属于机械反应。
  15. 撒谎的时候没有与之相对应的表情,往往没有任何表情。
  16. 手一直摩挲,一种自我安慰的姿态,当你不相信自己的在说什么的时候,使自己安心。
  17. 当真正的凶手看到被害者照片的时候,会表现出恶心、轻蔑甚至是害怕。但绝对不会是吃惊。
  18. 要是有人要将要实施血腥的罪行,就会出现这样的表情:眉毛朝下皱紧,上眼睑扬起,眼袋绷紧。
  19. 亮出中指(fuck的手势),这是象征性的还有特定意识的下意识手势,充满敌意。
  20. 鼻孔外翻,嘴唇紧闭,生气。
  21. 下巴扬起,嘴角下垂,自责。
  22. 眉毛向上,拉紧,恐惧。
  23. 如果先突然大声说话,然后再用手猛拍桌子,这是对可怕事情反应的手势时间差。如果是真的发火,这两个动作会同时进行。
  24. 提高右边的眉毛,表示你很疑问。
  25. 受右脑控制的左半边脸更容易暴露内心的真实情感(左撇子相反)。

◆撒谎的微表情心理学分析

  • 向对方询问某事时,对方一侧肩抖动表示对方对自己的话不自信。身体和语言不一致,表示他在撒谎。惊奇、害怕的表情在脸上超过一秒,表示是假装的对方对你的质问表示不屑,通常你的质问会是真的。
  • 对方对你撒谎时,会有更多的眼神交流,来判断你是否相信他的谎言。对你的问题生硬的重复是典型的撒谎方式。
  • 说话或思考时把手放在鼻子上是想要掩饰什么的举动。说话时一直把手放在裤兜里或抵着大腿,是紧张的表现。描述一连串发生的事情,如果事情是编造的,他可以按虚构好的顺序说,但是却无法倒叙重复。
  • 人撒谎时会摸脖子,这是经典的机械反应。

◆紧张、愤怒、兴奋的微表情心理学分析

  • 紧张,愤怒,兴奋三种情绪会使人的瞳孔放大手臂紧贴腿部,手指竖起,是心里不安的表现。
  • 微笑的时候眨眼睛说明真的想到令人幸福的事。
  • 假笑眼角是没有皱纹的。
  • 人在害怕时会出现生理逃跑反应:血液从四肢回流回腿部,做好逃跑准备,手部会先变冰凉。微表情是内心流露与掩饰,通常发生在五分之一秒的时间之内。你说错了,对方会有嘴角轻微上扬而又恢复。撒谎时,摇头否认之前可能会有一瞬间的点头动作。

◆忧伤的微表情心理学分析

  • 眉毛挂下来。羞愧的表情:低着头,手抚摸额头,擦汗状。不屑的表情:上嘴唇上扬说话很急,使用手臂或者物体将自己与对方之间形成障碍,是焦虑的表现。当然,每个人遇到被人疑为罪犯时都会有这样的反应。

◆其它的微表情心理学分析

  • 瘪嘴角是经典的犯错表情。对自己的话没信心。
  • 声音的震颤可能是反感或厌恶。
  • 没有表情与出现表情同样重要当一个人面部两侧表情不对称时,他很有可能在伪装感情。
  • 抚摸自己的手是一种自我安慰的手势,在自己不完全相信自己所说的话时,用来尽量打消自己的疑虑。
  • 如果是真的生气,大吼大叫和手用力拍桌子应该是同时发生的,如果一先一后,就有可能是在伪装。
  • 研究表明,越受欢迎的人,越会撒谎,他们善于隐藏自己的情感因此容易受欢迎。
  • 真正的凶手会对被害人表现出轻视、厌恶,甚至害怕,而不是惊讶。

如果需要在某一文本字符串中替换指定的文本,请使用函数 SUBSTITUTE;
如果需要在某一文本字符串中替换特定位置处的任意文本,请使用函数 REPLACE。

SUBSTITUTE

SUBSTITUTE(text, old_text, new_text, [instance_num])
描述:在文本字符串中用 new_text 替换 old_text。

SUBSTITUTE 函数语法具有下列参数:

  • text 必需。需要替换其中字符的文本,或对含有文本(需要替换其中字符)的单元格的引用。
  • old_text 必需。需要替换的文本。
  • new_text 必需。用于替换 old_text 的文本。
  • Instance_num 可选。指定要将第几个 old_text 替换为 new_text。 如果指定了 instance_num,则只有满足要求的 old_text 被替换。 否则,文本中出现的所有 old_text 都会更改为 new_text。

例子1:
SUBSTITUTE("我们班一共有*个同学,男同学*人,女同学*人", "*", A2)
用单元格A2的内容替换字符串中的*号,通常可以用来补充固定模板中的数据。
我们班一共有30个同学,男同学30人,女同学30人
(因为没有指定替换哪一个*号,所以全部*号都被替换)

例子2
SUBSTITUTE("我们班一共有*个同学,男同学*人,女同学*人", "*", A3,2)
替换字符串中的第2个*号
我们班一共有*个同学,男同学16人,女同学*人

REPLACE和REPLACEB

根据指定位置的字符数,将部分字符串替换为不同的字符串。
REPLACE(old_text, start_num, num_chars, new_text)
REPLACEB(old_text, start_num, num_bytes, new_text)

  • 注意:这两个函数基本一致,只是在处理非英文字符的时候计算字符串的数量上不一致,国内可以一直使用replace。出错的情况下才需要考虑使用replaceb。

REPLACE 和 REPLACEB 函数语法具有下列参数:

  • old_text 必需。 要替换其部分字符的文本。
  • start_num 必需。 old_text 中要替换为 new_text 的字符位置。
  • num_chars 必需。 old_text 中希望 REPLACE 使用 new_text 来进行替换的字符数。
  • Num_bytes 必需。 old_text 中希望 REPLACEB 使用 new_text 来进行替换的字节数。
  • new_text 必需。 将替换 old_text 中字符的文本。

例子:
REPLACE("abcdefg",2,3, "+") ,将从第2个字符开始,连续3个字符bcd整体串替换为+。 a+efg

TEXT

TEXT(待格式化内容, "显示样式")

描述:将数据按指定方式展示。
例子1:
text(now(),"yyy年mm月dd日"),显示当前日期 2022年11月01日

例子2:
text(123,"00000"),显示5位数字,不足补0 00123 。这里如果超过5位数将显示为全部数字,并不是只显示5位。

例子3:
text(123.123,"# ?/?"),显示数字为几又几分之几,四舍五入: 123 1/8
这里#号后面有一个空格,问号代表分数的位数。
如果不加空格 text(123.123,"#?/?") 显示为几分之几格式: 895/8

注意:这个函数经常不单独使用,可以配合其它函数使用效果更好。