清朝云资源网

作者: 清朝云

  • 你的小鸡也需要锻炼锻炼


    共计 826 个字符,预计需要花费 3 分钟才能阅读完成。

    说来忏愧,第一次申请甲骨文就成功了,但是看论坛有些人申请了几年都不成功。申请成功后开了两个 1h1g 的 amd 机器,看了一圈似乎说只有 arm 机器才需要保活,就没管了。

    后来收到了甲骨文提示回收闲置资源的邮件,意思就是我的两台小鸡太过空闲了,放在那里也是浪费资源,就要把我的实例停止。不过还好,只是停止而已,只需要登录甲骨文再次启动就可以了。

    你的小鸡也需要锻炼锻炼

    />

    虽然说影响不大,但经过这次以后,我觉得小鸡还是需要锻炼锻炼,不能让它太闲了。于是上 github 找到如下 docker 镜像,直接运行即可:

    docker run -d --name oracle-alive --restart=always wbchn/oracle-alive:latest /app/NeverIdle -c 1h17m -n 2h3m

    NeverIdle 是一个定期资源浪费的开源项目,参数如下:

    • -c 指启用 CPU 定期浪费,后面跟随每次浪费的间隔时间。
      如每 12 小时 23 分钟 34 秒浪费一次,则为 -c 12h23m34s。按照格式填。

    • -cp 指启用粗粒度的 CPU 百分比浪费,浪费率将随机器的使用水平实时变化。
      如最大浪费20%的CPU,则为 -cp 0.2。百分比的取值范围 [0, 1] 并且注意不要和 -c 一起使用。

    • -m 指启用浪费的内存量,后面是一个数字,单位为 GiB。
      启动后会占用对应量的内存,并且保持不会释放,直到手动杀死进程。

    • -n 指启用网络定期浪费,后面跟随每次浪费的间隔时间。
      格式同 CPU。会定期执行一次 Ookla Speed Test(还会输出结果哦!)

    • -t 指设置网络定期浪费的并发连接数。
      默认为10个,值越大消耗的资源越多,一般情况不需要更改。

    • -p 指设置该进程优先级,后跟随一个优先级数值。不指定则默认使用本平台的最低优先级。对于 UNIX-like 系统(如 Linux、FreeBSD 和 macOS),数值取值范围为 [-20,19] ,数字越大优先级越低。对于 Windows ,参见 官方文档。建议不进行指定,默认即为最低优先级,为其它所有进程让路。

    提醒:本文发布于154天前,文中所关联的信息可能已发生改变,请知悉!

    Tips:清朝云网络工作室

  • Docker 搭建镜像更新提醒服务 diun


    共计 1586 个字符,预计需要花费 4 分钟才能阅读完成。

    有些项目可能刚刚开始还不太稳定,并且此时更新也很频繁,所以如果想要尝鲜的话就要及时更新镜像。此时,需要一个可以监控镜像是否有更新的服务,就比如今天的主角 Diun。

    Diun 在 Docker 镜像有更新时可以及时发现并通知,通知支持多种方式如 Email、Gotify 等。

    官网:https://crazymax.dev/diun/

    搭建之前需要创建配置文件:

    # 创建目录
    mkdir /home/docker/diun
    
    # 创建配置文件
    cat > /home/docker/diun/diun.yml <<EOF
    # 配置文件目录
    db:
      path: diun.db
    
    # 调度任务
    watch:
      workers: 2
      schedule: "0 */6 * * *"
      # 第一次运行是否通知
      firstCheckNotif: false
    
    defaults:
      # 监控所有 tag
      watchRepo: false
      # 当有新镜像或镜像有更新时通知
      notifyOn:
        - new
        - update
    
    providers:
      docker:
        watchStopped: true
        watchByDefault: true
    
    # 配置通知,需要配置成自己的
    notif:
      mail:
        host: smtp-mail.outlook.com
        port: 587
        ssl: false
        insecureSkipVerify: true
        from: <xxx@outlook.com>
        username: <xxx@outlook.com>
        password: <password>
        to:
          - xxx@qq.com
        templateTitle: '{{ .Entry.Image }} {{ if (eq .Entry.Status "new") }}已可用{{ else }}已更新{{ end }}'
        templateBody: |
          云平台镜像更新提醒:
    
          **{{ .Entry.Image }}** {{ if .Entry.Image.HubLink }} ([链接]({{ .Entry.Image.HubLink }})){{ end }}
    
          您通过 {{ .Entry.Provider }} 订阅的镜像 {{ if (eq .Entry.Status "new") }}已可用{{ else }}已更新{{ end }}
    
          **{{ .Entry.Image.Domain }}** 镜像仓库 (由 _{{ escapeMarkdown .Meta.Hostname }}_ 主机触发)
    
          此镜像已于 **{{ .Entry.Manifest.Created.Format "2006-01-02 15:04:05 UTC" }}** {{ if (eq .Entry.Status "new") }}创建{{ else }}更新{{ end }}
    
          摘要为 `{{ .Entry.Manifest.Digest }}`,适用于 **{{ .Entry.Manifest.Platform }}** 平台。
    
          需要帮助或有问题?请访问 {{ .Meta.URL }} 并留下问题。
    EOF

    这里需要注意的是,notif 是配置通知的地方,可以配置多种通知,参考 通知配置

    踩过的坑,当配置 workers: 10firstCheckNotif: true,并且通知配置的 qq 邮箱,由于发送邮件过快,qq 邮箱的授权码直接失效了。建议通知邮件配置成其他邮件,并且 workers 不要配置太多。

    弄好配置文件后,直接启动容器即可:

    docker run -d \
    --restart always \
    --name diun \
    -v /home/docker/diun/data:/data \
    -v /home/docker/diun/diun.yml:/diun.yml:ro \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e "TZ=Asia/Shanghai" \
    -e "LOG_LEVEL=info" \
    -e "LOG_JSON=false" \
    crazymax/diun:latest serve

    效果如下:
    Docker 搭建镜像更新提醒服务 diun

    提醒:本文发布于152天前,文中所关联的信息可能已发生改变,请知悉!

    />

    Tips:清朝云网络工作室

  • CoreNext主题美化合集

    前言

    • 本次美化教程部分来源于CorePress主题美化合集,再加上本人的修改而成。
    • 本章内容不定时更新,有好的美化教程第一时间分享出来,记得经常光顾本站!
    • 本章内容只适合CoreNext主题,其他主题暂未测试,如有问题自行调整。

    教程

    所有Css代码放到子主题文件夹中的Css文件夹内的main.css内即可。

    更新时间

    最新更新时间:2024年6月19日23:06:21

    代码

    申请友链模块

    css代码如下:

    /* 友链申请按钮美化 */
    .application-url {
        padding: 5px 10px;
        color: white !important;
        text-decoration: none;
        border-radius: 50px;
        background: linear-gradient(to right, #fd0808, #df05ed);
        background-size: 200% auto;
        animation: flowingGradient 3s ease-in-out infinite;
        opacity: 1;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
        filter: brightness(130%);
    }
    
    .application-url:hover {
        transform: scale(1.1);
        -webkit-transform: scale(1.1);
        -moz-transform: scale(1.1);
        -o-transform: scale(1.1);
        -ms-transform: scale(1.1);
    }
    
    
    @keyframes flowingGradient {
      0% {
        background-position: 0% 50%;
      }
      50% {
        background-position: 100% 50%;
      }
      100% {
        background-position: 0% 50%;
      }
    }
    
    .application-url .friends-title > div  {
        /* 添加一个高度,不然不能对齐 */
        line-height: 32px;
    }
    

    评论输入框添加背景图

    css代码如下:

    /*评论背景图*/
    textarea.comment-textarea[data-v-1ef8f4cc] {
        background-color:transparent;background:linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05)),url(/api/img/comment.png) right 10px bottom 10px no-repeat;-moz-transition:ease-in-out 0.45s;-webkit-transition:ease-in-out 0.45s;-o-transition:ease-in-out 0.45s;-ms-transition:ease-in-out 0.45s;transition:ease-in-out 0.45s;
    }
    textarea.comment-textarea[data-v-1ef8f4cc]:focus {
        background-position-y:789px;-moz-transition:ease-in-out 0.45s;-webkit-transition:ease-in-out 0.45s;-o-transition:ease-in-out 0.45s;-ms-transition:ease-in-out 0.45s;transition:ease-in-out 0.45s;
    }

    请将其中的/wp-content/uploads/2023/03/comment.png 替换为自己的图片地址

    效果如下:

    文章页图片悬浮

    css代码如下:

    图片具体文字太近,加了一个 margin 属性,不需要的可以去掉

    /*文章图片悬浮效果*/
    .core-next-img {
        transition: All 0.4s ease-in-out;
        -webkit-transition: All 0.4s ease-in-out;
        -moz-transition: All 0.4s ease-in-out;
        -o-transition: All 0.4s ease-in-out;
        margin: 10px 0;
    }
    .core-next-img:hover {
        transform: translate(0, -10px);
        -webkit-transform: translate(0, -10px);
        -moz-transform: translate(0, -10px);
        -o-transform: translate(0, -10px);
        -ms-transform: translate(0, -10px);
        box-shadow:5px 5px 10px gray;   
    } 
    

    添加彩色滚动条

    css代码如下:

    /**彩色滚动条*/
    ::-webkit-scrollbar {
        width: 8px;  
        height: 1px;
    }
    ::-webkit-scrollbar-thumb {
        background-color: #12b7f5;
        background-image: -webkit-linear-gradient(45deg, rgba(255, 93, 143, 1) 25%, transparent 25%, transparent 50%, rgba(255, 93, 143, 1) 50%, rgba(255, 93, 143, 1) 75%, transparent 75%, transparent);
    }
    ::-webkit-scrollbar-track {
        -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
        background: #f6f6f6;
    }

    首页文章悬浮效果

    css代码如下:

    .post-list .post-item:hover {
        opacity: 1;
        z-index: 99;
        border-radius: 20px;
        transform: translateY(-5px);
        box-shadow: 0 3px 20px rgb(0 0 0 / 25%);
        animation: index-link-active 1s cubic-bezier(0.315, 0.605, 0.375, 0.925) forwards;
    }
    
    .post-list .post-item:hover .post-item__cover {
      transform: translateY(-100%);
    }
    
    .post-list .post-item__cover {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
      transition: transform 0.3s ease;
      transform: translateY(0);
    }
    
    .post-list .post-item__title {
      position: absolute;
      bottom: 20px;
      left: 20px;
      color: #fff;
      font-size: 20px;
      font-weight: 600;
    }
    
    

    底部菜单美化

    本代码来源于诺言博客

    css代码如下:

    /*CSS 网站底部自定义按钮美化开始*/
    :root{--theme-color:#f04494;
    --focus-shadow-color:rgba(240,68,148,.4);
    --mian-max-width:1200px;}.github-badge {
        display: inline-block;
        border-radius: 4px;    text-shadow: none;    font-size: 12px;    color: #fff;    line-height: 15px;    margin-bottom: 5px;}.badge-subject {
        display: inline-block;    background-color: #4d4d4d;    padding: 4px 4px 4px 6px;
        border-top-left-radius: 4px;
        border-bottom-left-radius: 4px;}.github-badge .bg-blue {
        background-color: #007ec6;}.github-badge .bg-brightgreen {
        background-color: #4dc820;}.github-badge .bg-blueviolet {
        background-color: #8833d7;}.github-badge .badge-value {
        display: inline-block;    padding: 4px 6px 4px 4px;
        border-top-right-radius: 4px;
        border-bottom-right-radius: 4px;}.github-badge .bg-orange {
        background-color: orange;}.github-badge .bg-red {
        background-color: red;}
        /*CSS 网站底部自定义按钮美化结束*/
        

    再进入小工具的底部左侧添加自定义Html,代码如下

    <div class="github-badge">
    <span class="badge-subject bg-blue"><a style="color:#fff" href="https://www.xrbk.cn/1018.html#" target="_blank">友链申请</a>
    </span>
    <span class="badge-subject bg-blueviolet"><a style="color:#fff" href="https://www.xrbk.cn/1018.html#" target="_blank">网站地图</a>
    </span>
    <span class="badge-subject bg-green"><a style="color:#fff" href="https://www.xrbk.cn/1018.html#" target="_blank">留言建议</a>
    </span>
    <span class="badge-subject bg-orange"><a style="color:#fff" href="https://www.xrbk.cn/1018.html#" target="_blank">免责申明</a>
    </span>
    </div>

    将其中的#换成自己的链接即可

    底部黑暗明亮模式切换

    首先找到主题文件夹下的/static/css/dark.css 添加如下代码

    .core-footer{background: #22292d !important;color: #b3c0ce !important;}

    然后添加CSS代码

    css代码如下:

    /** 修改底部颜色 */
    .core-footer {
       background: #fff;
       color: #999;
       box-shadow: 0 0.5px 0.5px 1px rgb(0 0 0 / 10%);
        padding: 20px 30px 30px 30px;
    }
    
    .core-footer a {
       color: unset!important;;
    }
    
    .footer-right {
       margin-bottom: unset!important;;
    }
    
    .core-footer a:hover {
        color:var(--MaincolorHover) !important;
    }

    文章底部添加时间和时效性

    css代码如下

     /**文章添加时间和时效性*/
    #comment_addface { 
        position: relative 
        
    } 
    .conment-face-plane { 
        position: absolute; 
        transition: .15s; 
        box-shadow: 0 5px 10px rgba(0, 0, 0, .2); 
        border: 1px solid rgba(0, 0, 0, .2); 
        border-radius: 6px; 
        top: 100%; 
        padding: 10px; 
        background: #fff; 
        max-width: 300px; 
        z-index: 9999; 
        opacity: 1; 
        visibility: hidden 
        
    } 
    .popover-btn-face { 
        margin-top: 10px 
        
    } 
    .popover-btn { 
        border-radius: 4px; 
        display: inline-block; 
        transition: .15s; 
        vertical-align: middle; 
        padding: .3em .5em; 
        text-align: center; 
        line-height: 1.44; 
        border: none; 
        outline: none; 
        cursor: pointer 
        
    }

    再到子主题的template文件夹内的single.php添加如下代码

    <div class="c-alert c-alert-error">本文最后更新于<code><?php echo the_time('Y-m-j');
    ?></code>部分内容具有时效性,如有失效,请留言</div>
    

    LOGO扫光

    代码如下

    .home-img {
        position:relative;
        float:left;
        margin-right:10px;
        padding:5px 0;
        overflow:hidden;
    }
    .home-img  a:before {
        content:"";
        position:absolute;
        left:-665px;
        top:-460px;
        width:200px;
        height:15px;
        background-color:rgba(255,255,255,.5);
        -webkit-transform:rotate(-45deg);
        -moz-transform:rotate(-45deg);
        -ms-transform:rotate(-45deg);
        -o-transform:rotate(-45deg);
        transform:rotate(-45deg);
        /*角度倾斜45*/-webkit-animation:searchLights 1s ease-in 1s infinite;
        -o-animation:searchLights 1s ease-in 1s infinite;
        animation:searchLights 2s ease-in 2s infinite;
        /*光扫过去的时间,自己修改,可以加快1s ease-in表示扫过去时间*/
    }
    @-webkit-keyframes searchLights {
        0% {
        left:-100px;
        top:0;
    }
    to {
        left:120px;
        top:100px;
    }
    }@-o-keyframes searchLights {
        0% {
        left:-100px;
        top:0;
    }
    to {
        left:120px;
        top:100px;
    }
    }@-moz-keyframes searchLights {
        0% {
        left:-100px;
        top:0;
    }
    to {
        left:120px;
        top:100px;
    }
    }@keyframes searchLights {
        0% {
        left:-100px;
        top:0;
    }
    to {
        left:120px;
        top:100px;
    }
    }

    去除侧边栏站长工具中的数据统计

    css代码如下

    .webmaster-widget .webmaster-site-info{
        display: none;
    }
    

    导航栏添加背景图和透明效果

    首先下载背景图:

    css代码如下:

    your img api 替换为你的图片链接

    /**  导航栏添加背景图和透明效果  */
    header {
        background-color: rgba(255, 255, 255, 0.96);
        background-image: url(your img api);
        background-position: center right;
        background-size: auto 100%;
        box-shadow: 0px 5px 40px 0px rgba(17,58,93,0.1);
    }
    
    .menu-header-plane > ul {
       background-color: rgba(255, 255, 255, 0.96);
        background: unset;
    }

    首页文章添加间距

    css代码如下

    .post-item {
      margin-bottom: 20px;
    }

    实时监测页面是否离开并自动更改标题

    将如下代码添加到后台主题设置 – 插入代码  – 页头代码

    <script>
    document.addEventListener('visibilitychange', function () {
    if (document.visibilityState == 'hidden') {
        normal_title = document.title;
        document.title = 'w(゚Д゚)w 宝~请不要离开!';
    } else document.title = normal_title;
    });
    </script>

    其中的w(゚Д゚)w 宝~请不要离开! 和 normal_title 分别为离开时和返回时显示的标题,可以根据自己的喜好修改

    底部ICP备案信息居中

    有不少地区或者服务商要求备案信息放在底部居中

    将CSS代码放入子主题的CSS文件中

    .core-footer {
      position: relative;
    }
    
    .icp-warp {
      position: absolute;
      bottom: 0;
      left: 50%;
      transform: translateX(-50%);
    }

    侧边栏添加欢迎词

    如下图效果

    侧边栏添加如下自定义html代码

    <div id="scroll-broadcast">
        <div id="container-box-1">
            <div class="container-box-1-1">每天来逛逛我的博客,会让你</div>
            <div id="flip-box-1">
                <div><div class="flip-box-1-1">生活也美好了!</div></div>
                <div><div class="flip-box-1-2">心情也舒畅了!</div></div>
                <div><div class="flip-box-1-3">走路也有劲了!</div></div>
                <div><div class="flip-box-1-4">腿也不痛了!</div></div>
                <div><div class="flip-box-1-5">腰也不酸了!</div></div>
                <div><div class="flip-box-1-6">工作也轻松了!</div></div>
            </div>
            <div class="container-box-1-2">你好我也好,不要忘记哦!</div>
        </div>
    </div>
    <style type="text/css">
        #scroll-broadcast {margin: -10px;}
        #container-box-1{color: #4c5864;font-weight: bold; border-radius: var(--border-hd);text-transform:uppercase;width:100%;font-size:16px;line-height:50px;text-align:center;padding: 10px;background: linear-gradient(45deg, #C7F5FE 10%, #C7F5FE 40%, #FCC8F8 40%, #FCC8F8 60%, #EAB4F8 60%, #EAB4F8 65%, #F3F798 65%, #F3F798 90%);}
        #flip-box-1{overflow:hidden;height:50px;border-radius:99px}
        #flip-box-1 div{height:50px}
        #flip-box-1>div>div{color:#fff;display:inline-block;text-align:center;height:50px;width:100%}
        #flip-box-1 div:first-child{animation:show 8s linear infinite}
        .flip-box-1-1{background-image:linear-gradient(to right,#fa709a 0,#fee140 100%)}
        .flip-box-1-2{background-image: linear-gradient(120deg, #e0c3fc 0%, #8ec5fc 100%);}
        .flip-box-1-3{background-image: linear-gradient(to right, #b8cbb8 0%, #b8cbb8 0%, #b465da 0%, #cf6cc9 33%, #ee609c 66%, #ee609c 100%);}
        .flip-box-1-4{background-image: linear-gradient(to right, #f78ca0 0%, #f9748f 19%, #fd868c 60%, #fe9a8b 100%);}
        .flip-box-1-5{background-image: linear-gradient(to right, #74ebd5 0%, #9face6 100%);}
        .flip-box-1-6{background-image: linear-gradient(to top, #9795f0 0%, #fbc8d4 100%);}
        @keyframes show{
            0%{margin-top:-300px}
            5%{margin-top:-250px}
            16.666%{margin-top:-250px}
            21.666%{margin-top:-200px}
            33.332%{margin-top:-200px}
            38.332%{margin-top:-150px}
            49.998%{margin-top:-150px}
            54.998%{margin-top:-100px}
            66.664%{margin-top:-100px}
            71.664%{margin-top:-50px}
            83.33%{margin-top:-50px}
            88.33%{margin-top:0}
            99.996%{margin-top:0}
        100%{margin-top:300px}
        }
    </style>

  • WordPress侧边栏添加节日倒计时

    前言

    临近春节,所以突发奇想想要给网站加一个节日倒计时,看看距离春节还有多久

    代码

    WordPress侧边栏添加自定义Html并且加入以下代码

    <span id="ActivityDate">2024-02-10 00:00:00</span>
    <script>
        // 获取id
        var ActivityDate = document.getElementById("ActivityDate");
        function timepiece(key){
            var datatime = /^[d]{4}-[d]{1,2}-[d]{1,2}( [d]{1,2}:[d]{1,2}(:[d]{1,2})?)?$/ig,str='',s;
            // 正则验证日期格式是否正确
            if(!key.match(datatime)){
                console.log('日期参数错误,请按格式填写,如 1996-10-22 24:00:00');
                return
            }
            // 当前日期减去活动日期,判断是否超出
            var sec = (new Date(key.replace(/-/ig,'/')).getTime() - new Date().getTime())/1000;
            if(sec < 0){
                ActivityDate.innerHTML = "<span style=" + "color:red;" + ">" + "新的一年开始啦,祝大家新年快乐!" + "</span>";
                return
            }
            s = {
                '天':sec/24/3600,
                '时':sec/3600%24,
                '分':sec/60%60,
                '秒':sec%60
            }
            for(i in s){
                if(Math.floor(s[i]) > 0) str += Math.floor(s[i]) + i;
            }
            if(Math.floor(sec) == 0){
                str='0秒';
            }
            // 距离活动结束时间显示到页面
            ActivityDate.innerHTML = "距离2024年春节还有:"+"<span style=" + "color:#4ad564;" + ">" + str + "</span>";
            // 每隔1秒更新一次
            setTimeout(function(){
                timepiece(key)
            },1000)
        }
        timepiece(ActivityDate.innerHTML);
    </script>
  • CoreNext_Beautiful – CoreNext主题的美化插件

    前言

    之前就讲过关于CoreNext主题美化,但是对于很多人来说有点麻烦,所以这次搞了个插件。

    功能

    技术有限,只能更新四个美化

    1.彩虹滚动条

    2.首页文章鼠标停留悬浮

    3.文章页图片鼠标停留悬浮

    4.友链模块美化

    界面截图

    下载地址

  • 08月22日,星期四, 每天60秒读懂全世界!

    百度热搜新闻

    新闻来源:百度热搜榜

    1. 全红婵陈艺文等获记大功奖励 8月21日,广东给巴黎奥运会获奖运动员、教练员奖励通报:全红婵、陈艺文、梁伟铿等获记大功奖励。

    2. 12306回应男子把卧铺让给妹妹被拒 近日,火车上一男子把自己的卧铺让给硬座车厢的妹妹,却被列车员制止,引发争议。12306回应:需要和列车长协商一下。

    3. 非盟委员会主席谈中非媒体合作 8月21日,第六届中非媒体合作论坛暨中非智库高端对话在北京开幕。非盟委员会主席谈中非媒体合作:鼓励媒体专业人才交流项目。

    4. 广州暴雨致水浸 沿街商铺损失严重 据媒体8月21日报道,广州多区暴雨致水浸,有街巷水位至小腿高度,番禺石碁镇多个沿街商铺损失严重。

    5. 印度16岁女孩乘公交遭司机等5人轮奸

    6. 从上海飞广州飞了一晚上还在原地

    7. 樊振东马龙陈梦退出澳门赛 8月21日,WTT澳门冠军赛2024参赛名单出炉,樊振东、马龙以及陈梦退出本次比赛。

    8. 四川凉山突发森林大火?谣言 近日,有网民发视频称“四川凉山彝族自治州木里县突发森林大火”,引发关注。经当地网信部门联动应急管理局核实,网传消息系谣言。

    9. 金价狂飙 富人抢购实体金条

    10. 日本樱岛火山喷发烟柱高达2700米

    —- 百度热搜新闻 End —-

    知乎新闻

    新闻来源:知乎日榜

    标题: 电影《白蛇:浮生》对中国动画有哪些创新与传承?
    链接: https://daily.zhihu.com/story/9774771
    ———————-
    标题: 「唯见月寒日暖,来煎人寿」改为「日寒月暖」会怎么样?
    链接: https://daily.zhihu.com/story/9774776
    ———————-
    标题: 从进化论角度来看,人死前大量释放内啡肽多巴胺有什么意义?脑海的走马灯有什么意义?
    链接: https://daily.zhihu.com/story/9774781
    ———————-
    标题: 中国科学院院士、两弹一星功勋奖章获得者、理论物理学家周光召逝世,他对物理学有哪些影响深远的贡献?
    链接: https://daily.zhihu.com/story/9774784
    ———————-
    标题: 瞎扯 · 如何正确地吐槽
    链接: https://daily.zhihu.com/story/9774785
    ———————-

    —- 知乎新闻 End —-

    IT之家新闻

    新闻来源:ITHome之家科技新闻

    标题: 业内人士:《黑神话:悟空》全平台销量有望达到 500 万至 700 万套
    发布时间: 2024-08-21T07:37:37.407
    新闻简介: 据贝壳财经报道,多位游戏行业从业者预测《黑神话:悟空》的全平台销量有望达到 500 万至 700 万套,按照 268 元的最低销售价格,该游戏的买断制销售流水就在 13.4 亿元至 18.76 亿元。
    ———————-
    标题: 长城汽车就遭南方电网“拉黑”一事致歉: 35 台坦克 500 车型交付出现工作疏忽,已进行补偿
    发布时间: 2024-08-21T11:35:02.457
    新闻简介: 长城汽车表示,经与南方电网确认,我司已对差异部分进行了补偿,并对此给南方电网带来的不便致以诚挚的歉意。
    ———————-
    标题: 《黑神话:悟空》爆火后,“游戏科学员工疯狂被挖”引热议
    发布时间: 2024-08-21T08:47:40.703
    新闻简介: 其实早在 2020 年《黑神话:悟空》首个预告片发布的时候,网上就流传出游戏科学员工被挖的消息,不管人员变动如何,最终游戏还是顺利发售,并取得了销量口碑双丰收。#黑神话公司员工疯狂被挖#
    ———————-
    标题: 《黑神话:悟空》“惊动”外交部:反映了中国文化的吸引力
    发布时间: 2024-08-21T15:53:22.45
    新闻简介: 据央视新闻报道,外交部发言人毛宁今日主持例行记者会。有记者提及,中国的国产游戏《黑神话:悟空》上线后,受到国际玩家青睐。#外交部回应黑神话悟空全球大火#
    ———————-
    标题: 《黑神话:悟空》1998 元的实体收藏版二手市场价格飙升,已被炒至 6000 元
    发布时间: 2024-08-21T09:26:45.487
    新闻简介: 目前,《黑神话:悟空》的实体版均已售罄。6 月,该游戏曾以预售形式上线限量 1 万套的 1998 元实体收藏版和限量 2 万套的 820 元实体豪华版,共计 3 万套实体版游戏,开售即售罄,预售额达 3638 万元。据北京商报报道,8 月 20 日,有商家在二手交易平台以拍卖形式销售该批实体版游戏,1998 元的实体收藏版价格已被炒至 6000 元。
    ———————-
    标题: 汉仪《黑神话:悟空》定制字体官宣,“汉仪黑神话体”即将发布
    发布时间: 2024-08-21T09:41:40.68
    新闻简介: 汉仪披露了与《黑神话:悟空》合作的部分信息:联合《黑神话:悟空》定制字体——汉仪黑神话,近日即将发布,“期待在游戏中传播中国书法之美”。
    ———————-
    标题: 小米 15 Ultra 手机代号曝光:轩辕
    发布时间: 2024-08-21T06:49:48.897
    新闻简介: 科技媒体 XiaomiTime 昨日(8 月 20 日)发布推文,在 Mi Code 代码库中,发现小米 15 Ultra 旗舰手机代号为“轩辕”(Xuanyuan)。
    ———————-
    标题: 华为余承东现身荣耀手机门店,姜海荣回应“感谢余总关心”
    发布时间: 2024-08-21T18:02:21.37
    新闻简介: 华为常务董事、终端 BG 董事长余承东近日被拍到在机场荣耀门店看手机,荣耀终端有限公司中国区 CMO 姜海荣转发该博文并回应“感谢余总关心”。
    ———————-
    标题: WPS 回应“崩了”:已恢复,用户可免费领取 15 天会员
    发布时间: 2024-08-21T16:10:08.437
    新闻简介: 作为补偿,WPS 用户可于明日(8 月 22 日 0 点-24 点)免费领取 15 天 WPS 会员,用户届时可以在 WPS 中搜索关键词「AI 办公」进行领取。#WPS补偿用户15天会员# #WPS已恢复##WPS崩了#
    ———————-
    标题: 高通骁龙 8 Gen 4 Adreno 830 GPU 曝光:1250 MHz、比前代高 25%,问鼎最快手机图形芯片
    发布时间: 2024-08-21T11:09:45.233
    新闻简介: 消息源 @i冰宇宙 昨日(8 月 20 日)发布微博,爆料称高通骁龙 8 Gen 4 芯片的 GPU 时钟频率为 1250 MHz,比骁龙 8 Gen 3 领先版高出 25%。
    ———————-
    标题: 《黑神话:悟空》Steam 同时在线人数达 235 万再创新高
    发布时间: 2024-08-21T22:28:34.553
    新闻简介: 今日晚间,《黑神话:悟空》Steam 同时在线玩家数达到 2,358,580 人,再次刷新昨日约 222 万的记录。
    ———————-
    标题: 滴滴选定女司机功能开启内测,仅限女乘客使用
    发布时间: 2024-08-21T20:08:53.943
    新闻简介: 目前,女乘客可选女司机、宠物快车、滴滴包车、拉黑异味车等功能已完成一期产品开发,并在少量城市小范围测试,后续将邀请用户参与内测,并陆续上线更多城市。
    ———————-

    —- IT之家新闻 End —-

  • 08月22日,星期四, 每天60秒读懂全世界!

    百度热搜新闻

    新闻来源:百度热搜榜

    1. 全红婵陈艺文等获记大功奖励 8月21日,广东给巴黎奥运会获奖运动员、教练员奖励通报:全红婵、陈艺文、梁伟铿等获记大功奖励。

    2. 12306回应男子把卧铺让给妹妹被拒 近日,火车上一男子把自己的卧铺让给硬座车厢的妹妹,却被列车员制止,引发争议。12306回应:需要和列车长协商一下。

    3. 非盟委员会主席谈中非媒体合作 8月21日,第六届中非媒体合作论坛暨中非智库高端对话在北京开幕。非盟委员会主席谈中非媒体合作:鼓励媒体专业人才交流项目。

    4. 广州暴雨致水浸 沿街商铺损失严重 据媒体8月21日报道,广州多区暴雨致水浸,有街巷水位至小腿高度,番禺石碁镇多个沿街商铺损失严重。

    5. 印度16岁女孩乘公交遭司机等5人轮奸

    6. 从上海飞广州飞了一晚上还在原地

    7. 樊振东马龙陈梦退出澳门赛 8月21日,WTT澳门冠军赛2024参赛名单出炉,樊振东、马龙以及陈梦退出本次比赛。

    8. 四川凉山突发森林大火?谣言 近日,有网民发视频称“四川凉山彝族自治州木里县突发森林大火”,引发关注。经当地网信部门联动应急管理局核实,网传消息系谣言。

    9. 金价狂飙 富人抢购实体金条

    10. 日本樱岛火山喷发烟柱高达2700米

    —- 百度热搜新闻 End —-

    知乎新闻

    新闻来源:知乎日榜

    标题: 电影《白蛇:浮生》对中国动画有哪些创新与传承?
    链接: https://daily.zhihu.com/story/9774771
    ———————-
    标题: 「唯见月寒日暖,来煎人寿」改为「日寒月暖」会怎么样?
    链接: https://daily.zhihu.com/story/9774776
    ———————-
    标题: 从进化论角度来看,人死前大量释放内啡肽多巴胺有什么意义?脑海的走马灯有什么意义?
    链接: https://daily.zhihu.com/story/9774781
    ———————-
    标题: 中国科学院院士、两弹一星功勋奖章获得者、理论物理学家周光召逝世,他对物理学有哪些影响深远的贡献?
    链接: https://daily.zhihu.com/story/9774784
    ———————-
    标题: 瞎扯 · 如何正确地吐槽
    链接: https://daily.zhihu.com/story/9774785
    ———————-

    —- 知乎新闻 End —-

    IT之家新闻

    新闻来源:ITHome之家科技新闻

    标题: 业内人士:《黑神话:悟空》全平台销量有望达到 500 万至 700 万套
    发布时间: 2024-08-21T07:37:37.407
    新闻简介: 据贝壳财经报道,多位游戏行业从业者预测《黑神话:悟空》的全平台销量有望达到 500 万至 700 万套,按照 268 元的最低销售价格,该游戏的买断制销售流水就在 13.4 亿元至 18.76 亿元。
    ———————-
    标题: 长城汽车就遭南方电网“拉黑”一事致歉: 35 台坦克 500 车型交付出现工作疏忽,已进行补偿
    发布时间: 2024-08-21T11:35:02.457
    新闻简介: 长城汽车表示,经与南方电网确认,我司已对差异部分进行了补偿,并对此给南方电网带来的不便致以诚挚的歉意。
    ———————-
    标题: 《黑神话:悟空》爆火后,“游戏科学员工疯狂被挖”引热议
    发布时间: 2024-08-21T08:47:40.703
    新闻简介: 其实早在 2020 年《黑神话:悟空》首个预告片发布的时候,网上就流传出游戏科学员工被挖的消息,不管人员变动如何,最终游戏还是顺利发售,并取得了销量口碑双丰收。#黑神话公司员工疯狂被挖#
    ———————-
    标题: 《黑神话:悟空》“惊动”外交部:反映了中国文化的吸引力
    发布时间: 2024-08-21T15:53:22.45
    新闻简介: 据央视新闻报道,外交部发言人毛宁今日主持例行记者会。有记者提及,中国的国产游戏《黑神话:悟空》上线后,受到国际玩家青睐。#外交部回应黑神话悟空全球大火#
    ———————-
    标题: 《黑神话:悟空》1998 元的实体收藏版二手市场价格飙升,已被炒至 6000 元
    发布时间: 2024-08-21T09:26:45.487
    新闻简介: 目前,《黑神话:悟空》的实体版均已售罄。6 月,该游戏曾以预售形式上线限量 1 万套的 1998 元实体收藏版和限量 2 万套的 820 元实体豪华版,共计 3 万套实体版游戏,开售即售罄,预售额达 3638 万元。据北京商报报道,8 月 20 日,有商家在二手交易平台以拍卖形式销售该批实体版游戏,1998 元的实体收藏版价格已被炒至 6000 元。
    ———————-
    标题: 汉仪《黑神话:悟空》定制字体官宣,“汉仪黑神话体”即将发布
    发布时间: 2024-08-21T09:41:40.68
    新闻简介: 汉仪披露了与《黑神话:悟空》合作的部分信息:联合《黑神话:悟空》定制字体——汉仪黑神话,近日即将发布,“期待在游戏中传播中国书法之美”。
    ———————-
    标题: 小米 15 Ultra 手机代号曝光:轩辕
    发布时间: 2024-08-21T06:49:48.897
    新闻简介: 科技媒体 XiaomiTime 昨日(8 月 20 日)发布推文,在 Mi Code 代码库中,发现小米 15 Ultra 旗舰手机代号为“轩辕”(Xuanyuan)。
    ———————-
    标题: 华为余承东现身荣耀手机门店,姜海荣回应“感谢余总关心”
    发布时间: 2024-08-21T18:02:21.37
    新闻简介: 华为常务董事、终端 BG 董事长余承东近日被拍到在机场荣耀门店看手机,荣耀终端有限公司中国区 CMO 姜海荣转发该博文并回应“感谢余总关心”。
    ———————-
    标题: WPS 回应“崩了”:已恢复,用户可免费领取 15 天会员
    发布时间: 2024-08-21T16:10:08.437
    新闻简介: 作为补偿,WPS 用户可于明日(8 月 22 日 0 点-24 点)免费领取 15 天 WPS 会员,用户届时可以在 WPS 中搜索关键词「AI 办公」进行领取。#WPS补偿用户15天会员# #WPS已恢复##WPS崩了#
    ———————-
    标题: 高通骁龙 8 Gen 4 Adreno 830 GPU 曝光:1250 MHz、比前代高 25%,问鼎最快手机图形芯片
    发布时间: 2024-08-21T11:09:45.233
    新闻简介: 消息源 @i冰宇宙 昨日(8 月 20 日)发布微博,爆料称高通骁龙 8 Gen 4 芯片的 GPU 时钟频率为 1250 MHz,比骁龙 8 Gen 3 领先版高出 25%。
    ———————-
    标题: 《黑神话:悟空》Steam 同时在线人数达 235 万再创新高
    发布时间: 2024-08-21T22:28:34.553
    新闻简介: 今日晚间,《黑神话:悟空》Steam 同时在线玩家数达到 2,358,580 人,再次刷新昨日约 222 万的记录。
    ———————-
    标题: 滴滴选定女司机功能开启内测,仅限女乘客使用
    发布时间: 2024-08-21T20:08:53.943
    新闻简介: 目前,女乘客可选女司机、宠物快车、滴滴包车、拉黑异味车等功能已完成一期产品开发,并在少量城市小范围测试,后续将邀请用户参与内测,并陆续上线更多城市。
    ———————-

    —- IT之家新闻 End —-

  • Docker 搭建提醒服务 mind


    共计 730 个字符,预计需要花费 2 分钟才能阅读完成。

    之前一直在寻找一款可以提醒自己的程序,并且可以配置邮件的通知方式,找了很久也没有找到,最近才看见了一款这样的开源项目。

    Mind 是一个可以自托管的提醒应用程序,用于创建提醒,并可以向几乎所有平台发送消息,包括预定的电子邮件。

    比如实际应用可以提醒自己上下班打卡、亲人的生日、服务器续费或者说领取腾讯无忧域名续费券,对了,你怎么只有我有两台无忧。

    Mind 拥有不错的管理面板和用户面板,可以方便地进行管理。并且通知可以支持单次定时、循环定时、特定工作日或手动触发。此外,使用 Apprise 可以发送通知到多个平台。

    Github 开源地址:https://github.com/Casvt/MIND

    搭建方式如下:

    docker run -d \
    --name mind \
    -v /home/docker/mind:/app/db \
    -e TZ=Asia/Shanghai \
    -p 8080:8080 \
    --restart=always \
    mrcas/mind:latest

    访问 8080 端口,可以进行登录,默认账号密码:admin/admin,登录以后必须先修改密码。

    Docker 搭建提醒服务 mind

    />

    输入新密码后需要按回车才会发送请求,之前一直以为是 bug。

    然后需要点击上方的 + 号创建一个新账户,再退出使用新的账户登录。然后可以创建一个通知方式:

    Docker 搭建提醒服务 mind

    />

    注意这里格式要正确才可以保存,比如用户名那里只能填账号,不能填 @qq.com 等。这里可能算 bug,但是问题不大,保存以后可以直接整条链接进行修改,只要测试成功可以发送通知即可。

    Docker 搭建提醒服务 mind

    />

    然后就可以进入主页添加提醒了,这里提醒可以选择模板,需要提前创建。提醒可以选择一次性的,也可以选择循环提醒,比如每分钟、每小时、每天等等,还可以选择工作日提醒,这个就很适合提醒打卡使用。

    Docker 搭建提醒服务 mind

    />

    最后放一张作者提供的效果图。

    Docker 搭建提醒服务 mind

    提醒:本文发布于151天前,文中所关联的信息可能已发生改变,请知悉!

    />

    Tips:清朝云网络工作室

  • Python 公历转换农历及简易万年历


    共计 7554 个字符,预计需要花费 19 分钟才能阅读完成。

    一般使用的 万年历,只提供距今前后百年的日历。这是因为其所用的计算方法是一种简便的近似计算,适用范围较小。其次,天文学方法计算量大,不适合日常软件使用。但如果要进行历史研究,范围就超出常用日历,本文即实现计算任意日期的农历。

    由于天文星历数据太大,本文的代码是直接利用 python 的 PyEphem 库。该库只提供了二分二至时间,没有 24 节气。但是也提供了任意时间的太阳黄经,可以利用此项计算 24 节气。

    本文提供三个功能:PerpetualCalendar 万年历,Solar2LunarCalendar 公历转农历,Lunar2SolarCalendar 农历转公历

    中国阴阳历基础:

    1. 以太阳历确定岁首,方法是通过测量影长确定冬至。以冬至所在月为子月,其后每月依次排序,闰月无建。

    2. 现行农历用寅正,即冬至后第二个月(冬至月起的第三月),冬至固定在十一月。

    3. 将二十四节气中的偶数序的节气称为十二中气。每月对应一个中气,若无中气,则该月作为闰月。

    4. 同时定气和定朔的情况下,可能出现多个无中气月,如此则规定只有连续两个冬至月之间出现十三次合朔年份的的第一个无中气月置闰。

    5. 使用节气月排定月份干支。

    详细农历分析另见 农历计算方法 一文。

    本文提供的简易万年历直接控制台打印:

    Python 公历转换农历及简易万年历

    />

     如需下图所示 UI 程序,另见:Python 万年历(含农历、节气等)

     Python 公历转换农历及简易万年历

    />

    import math, ephem
    
    lunar_months =["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]
    lunar_dates = ["初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"]
    heavenly_stems = ["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
    earthly_branches = ["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
    gz = [''] * 60  # 六十甲子表
    for i in range(60):
        gz[i] = heavenly_stems[i % 10] + earthly_branches[i % 12]
    
    def JD2date(JD, ut=0):
        return ephem.Date(JD + ut/24 - 2415020)
    
    def EquinoxSolsticeJD(year, angle):
        if 0 <= angle < 90:
            date = ephem.next_vernal_equinox(year)
        elif 90 <= angle < 180:
            date = ephem.next_summer_solstice(year)
        elif 180 <= angle < 270:
            date = ephem.next_autumn_equinox(year)
        else:
            date = ephem.next_winter_solstice(year)
        JD = ephem.julian_date(date)
        return JD
    
    # 计算二十四节气
    def SolarLongitube(JD):
        date = JD2date(JD)
        s = ephem.Sun(date)  # date 应为 UT 时间
        sa = ephem.Equatorial(s.ra, s.dec, epoch=date)
        se = ephem.Ecliptic(sa)
        L = se.lon / ephem.degree / 180 * math.pi
        return L
    
    def SolarTerms(year, angle):
        if angle > 270: year -= 1  # 岁首冬至
        if year == 0: year -= 1  # 公元 0 改为公元前 1
        JD = EquinoxSolsticeJD(str(year), angle)  # 初值
        if angle >= 270:
            JD0 = EquinoxSolsticeJD(str(year), (angle - 90) % 360)
            if JD < JD0: # 非年末冬至
                JD = EquinoxSolsticeJD(str(year+1), angle)  # 转入次年
        JD1 = JD
        while True:
            JD2 = JD1
            L = SolarLongitube(JD2)
            JD1 += math.sin(angle * math.pi / 180 - L) / math.pi * 180
            if abs(JD1 - JD2) < 0.00001:
                break  # 精度小于 1 second
        return JD1  # UT
    
    def DateDiffer(JD1, JD2):
        return math.floor(JD1 + 8 / 24 + 0.5) - math.floor(JD2 + 8 / 24 + 0.5)
    
    def DateCompare(JD1, JD2): # 输入 ut,返回 ut+8 的比较结果
        if DateDiffer(JD1, JD2) >= 0: return True  # JD1 >= JD 2
        else: return False
    
    def findSZY(JD, shuoJD):  # 查找 JD 所在的农历月份
        szy = -1
        for i in range(len(shuoJD)):
            if DateCompare(JD, shuoJD[i]):
                szy += 1  # date 所在的阴历月序,起冬至朔
        return szy
    
    def findDZS(year): # 寻找年前冬至月朔日
        if year == 1: year -= 1  # 公元元年前冬至在公元前 1 年
        dz = ephem.next_solstice((year - 1, 12)) # 年前冬至
        jd = ephem.julian_date(dz)
        # 可能的三种朔日
        date1 = ephem.next_new_moon(JD2date(jd - 0))
        jd1 = ephem.julian_date(date1)
        date2 = ephem.next_new_moon(JD2date(jd - 29))
        jd2 = ephem.julian_date(date2)
        date3 = ephem.next_new_moon(JD2date(jd - 31))
        jd3 = ephem.julian_date(date3)
        if DateCompare(jd, jd1): # 冬至合朔在同一日或下月
            return date1
        elif DateCompare(jd, jd2) and (not DateCompare(jd, jd1)):
            return date2
        elif DateCompare(jd, jd3): # 冬至在上月
            return date3
    
    def LunarCalendar(nian, type=1):   # type=1 时截止到次年冬至朔,=0 时截止到次年冬至朔次月
        dzs = findDZS(nian)
        shuo = dzs  # 计算用朔,date 格式
        shuoJD = [ephem.julian_date(dzs)]  # 存储 ut+8 JD,起冬至朔
        next_dzsJD = ephem.julian_date(findDZS(nian + 1))  # 次年冬至朔
        i = -1  # 中气序,从 0 起计
        j = -1  # 计算连续两个冬至月中的合朔次数,从 0 起计
        zry = 0
        flag = False
        # 查找所在月及判断置闰
        while not DateCompare(shuoJD[j+type], next_dzsJD):  # 从冬至月起查找,截止到次年冬至朔
            i += 1
            j += 1
            shuo = ephem.next_new_moon(shuo)  # 次月朔
            shuoJD.append(ephem.julian_date(shuo))
            # 查找本月中气,若无则置闰
            if j == 0: continue  # 冬至月一定含中气,从次月开始查找
            angle = (-90 + 30 * i) % 360  # 本月应含中气,起冬至
            qJD = SolarTerms(nian, angle)
            # 不判断气在上月而后气在后月的情况,该月起的合朔次数不超过气数,可省去
            if DateCompare(qJD, shuoJD[j+1]) and flag == False:  # 中气在次月,则本月无中气
                    zry = j + 1  # 置闰月
                    i -= 1
                    flag = True  # 仅第一个无中气月置闰
        # 生成农历月序表
        ymb = []
        for k in range(len(shuoJD)):
            ymb.append(lunar_months[(k - 2) % 12])  # 默认月序
            if j + type == 13:  # 仅 12 次合朔不闰,有闰时修改月名
                if k + 1 == zry:
                    ymb[k] = '闰' + lunar_months[(k-1 - 2) % 12]
                elif k + 1 > zry:
                    ymb[k] = lunar_months[(k-1 - 2) % 12]
        return ymb, shuoJD   # 月名表,合朔 JD 日期表
    
    def PerpetualCalendar(year, lunar_months=0):  # 万年历(农历及公历对照),不指定月份时输出全年
        if year == 0: return print('不存在公元 0 年')
        ymb, shuoJD = LunarCalendar(year, 0)
        if DateCompare(ephem.julian_date((year, 12, 31)), shuoJD[-2] + 29):
            ymb1, shuoJD1 = LunarCalendar(year+1)
            ymb = ymb[:-2] + ymb1[:2]
            shuoJD = shuoJD[:-2] + shuoJD1[:3]
        days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        days[1] = 29 if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0 else 28
        if year < 1582 and year % 4 == 0: days[1] = 29
        week = ['一', '二', '三', '四', '五', '六', '日', ]
        for j in range(12):
            if lunar_months != 0 and j + 1 != lunar_months: continue
            print('【' + str(year) + '年 ' + str(j+1) + '月  日历】')
            ysJD = ephem.julian_date((year, j+1))
            szy = findSZY(ysJD, shuoJD)  # 公历岁首对应的农历月
            ysRQ = DateDiffer(ysJD, shuoJD[szy])  # 每月 1 日的农历日期
            yue0 = DateDiffer(shuoJD[szy + 1], shuoJD[szy])
            yue1 = DateDiffer(shuoJD[szy + 2], shuoJD[szy + 1])
            blank = int((ysJD + 0.5) % 7)
            flag = False
            for row in range(6*2+1):
                if row % 2 == 1 and flag: break
                for k in range(7):
                    if row % 2 == 1:  # 公历行
                        day = row // 2 * 7 + k - blank + 1
                        if year == 1582 and j == 9:
                            if day > 4: day += 10
                    elif row != 0:  # 农历行
                        if row == 2 and k >= blank or row > 2:
                            rqx = ysRQ + row // 2 * 7 - 7 + k - blank
                            if rqx == 0: rq = ymb[szy]
                            elif 0 < rqx < yue0: rq = lunar_dates[rqx]
                            elif rqx == yue0: rq = ymb[szy+1]
                            elif yue0 < rqx < yue0 + yue1: rq = lunar_dates[rqx - yue0]
                            elif rqx == yue0 + yue1: rq = ymb[szy + 2]
                            elif rqx > yue0 + yue1: rq = lunar_dates[rqx - yue0 - yue1]
                    # 输出排版
                    if row == 0: print(" {:<5}".format(week[k]), end='')
                    elif row == 1 or row == 2:  # 首行
                        if k == 0:
                            print('       ' * blank, end='')
                        if row == 1 and k >= blank:
                            print(" {:<6d}".format(day), end='')
                        if row == 2 and k >= blank:
                            print("{0:{1}<3}".format(rq, '\u3000'), end=' ')
                    else:
                        if row % 2 == 1 and row != 1:
                            if day <= days[j]:
                                print(" {:<6d}".format(day), end='')
                            else:
                                flag = True
                                break
                        if row % 2 == 0 and row != 0 and row != 2:
                            if year == 1582 and j == 9 and day > days[j]: break
                            print("{0:{1}<3}".format(rq, '\u3000'), end=' ')
                            if row // 2 * 7 + k - blank - 6 >= days[j]: break
                print()
            print()
    
    def Solar2LunarCalendar(date): # 默认输入 ut+8 时间
        if date[0] == '0': return '不存在公元 0 年'
        JD = ephem.julian_date(date) - 8/24 # ut
        year, lunar_months, day = JD2date(JD, 8).triple()
        # 判断所在年
        dzs = findDZS(year)  # 本年冬至朔
        next_dzs = findDZS(year+1)  # 次年冬至朔
        this_dzsJD = ephem.julian_date(dzs)
        next_dzsJD = ephem.julian_date(next_dzs)
        nian = year  # 农历年
        if DateCompare(JD, next_dzsJD):  # 该日在次年
            nian += 1
        if not DateCompare(JD, this_dzsJD):  # 该日在上年
            nian -= 1
        # 判断所在月
        ymb, shuoJD = LunarCalendar(nian)
        szy = findSZY(JD, shuoJD)
        # 判断节气月
        if year < 0: year += 1
        jqy, jqr = JD2date(SolarTerms(year, lunar_months*30 + 255), 8).triple()[1:]
        if int(jqy) != lunar_months: lunar_months -= (int(jqy) - lunar_months)
        if day >= int(jqr): ygz = gz[(year * 12 + 12 + lunar_months) % 60]
        else: ygz = gz[(year * 12 + 11 + lunar_months) % 60]
        # 以正月开始的年干支
        if szy < 3: nian -= 1  # 正月前属上年
        if nian < 0: nian += 1
        ngz = gz[(nian - 4) % 60]
        rgz = gz[math.floor(JD + 8/24 + 0.5 + 49) % 60]
        rq = DateDiffer(JD, shuoJD[szy])  # 月内日期
        return date + ' 为农历:' + ngz + '年 ' + ygz + '月 ' + rgz + '日 ' + ymb[szy] + lunar_dates[rq] + '\n'
    
    def Lunar2SolarCalendar(nian, date):  # 正月开始的年
        date1 = date.split('闰')[-1]
        year = nian
        yx = lunar_months.index(date1[:-2])
        if yx + 1 > 10: year += 1  # 计算用年,起冬至朔
        if year == 0: return '不存在公元 0 年'
        yx = (yx + 2) % 12  # 子正转为寅正
        if "闰" in date: yx += 1
        # 查找所在月
        ymb, shuoJD = LunarCalendar(year, 0)
        szy = 0
        for i in range(len(ymb)):
            if ymb[i] == date1[:-2]:  # 按月序查找
                if ymb[i + 1] == date[:-2] or '闰' in date:
                    szy += 1  # 可能为闰月(不闰则计算次月)
                break
            szy += 1
        # 获得农历日期
        try:
            rq = lunar_dates.index(date[-2:])
        except:
            rgz = gz.index(date[-2:])
            sgz = math.floor(shuoJD[szy] + 8/24 + 0.5 + 49) % 60
            rq = (rgz - sgz) % 60
            if DateCompare(shuoJD[szy] + rq, shuoJD[szy+1]):
                print('该月无' + date[-2:])
            else:
                print(date[-2:] + '为该月' + lunar_dates[rq] + '日')
        date2 = str(JD2date(shuoJD[szy] + rq, 8))[:-9]
        return '农历' + str(nian) + '年' + date + ' 为公历:' + date2
    
    # ========= 测试内容 ===========
    #PerpetualCalendar(2020)
    
    #date = input('请输入日期:')
    date = "2019-3-15"
    date1 = "2016-11-29"
    date2 = "2033-9-1"      # 无中气月,一年仅得 12 月,不闰
    date3 = "2033-12-31"    # 冬至起的第一个无中气月,闰
    date4 = "2034-3-1"      # 冬至起的第二个无中气月,不闰
    print(Solar2LunarCalendar(date))
    
    print(Lunar2SolarCalendar(-1696, '十一月甲子'))
    print(Solar2LunarCalendar('-1695/1/7'))
    print(Lunar2SolarCalendar(2020, '正月初一'))
    print(Lunar2SolarCalendar(2033, '闰十一月十一'))

    天文计算中经常简化历表以简便计算,简化会降低计算精度。特别是时间进位可能会差到一天。计算定气定朔,日期越久远误差越大。如-2/12/26 定朔 23:59:38,若误差约 1 分钟,则可能定朔为 12/27 日。不过这种情况很少见。

    本程序虽以 ephem 库为例,但在农历算法上使用一般化的方法使其适用于较宽的年限以便适应不同精度的历表要求。实际上,ephem 库计算月亮位置的精度有限,适用年限也不广。在较小应用的范围内,可根据一些天文学特征简化程序。例如,如果上限不超过 BC1100 年,则无需考虑岁差和不同历法对回归年的取值问题,导致冬至计算结果在次年的情况(此后冬至固定在 12 月)。如果下限也不远,则无需考虑地球自转变慢和近点进动,计算节气利用太阳在近日点和远日点 不同的 运动特点,平气法寻找较好的值(如 31)可以保证定气不会超过平气计算结果从而仅需比较一次即可获得真实节气。

    本文转载自:Python 公历转换农历及简易万年历

    提醒:本文发布于148天前,文中所关联的信息可能已发生改变,请知悉!

    Tips:清朝云网络工作室

  • 记录一下 headscale 修改域名


    共计 291 个字符,预计需要花费 1 分钟才能阅读完成。

    因为 headscale 需要修改一下域名,所以将过程记录一下。这里修改域名所修改的文件地址或环境变量,以 Docker 搭建 headscale 异地组网完整教程 搭建教程为基础。

    服务端

    1. 修改 headscale 配置文件

    修改 /home/docker/headscale/config/config.yaml 文件的 server_urlbase_domain 地址。

    1. 修改 headscale-webui 环境变量

    修改 headscale-webui 启用时配置的环境变量 HS_SERVERDOMAIN_NAME 地址。

    修改以后删除容器,重新启动容器即可。

    客户端

    将数据清理后,按照搭建教程里面的安装方式安装即可。

    提醒:本文发布于141天前,文中所关联的信息可能已发生改变,请知悉!

    Tips:清朝云网络工作室