普通视图

每夫吐槽(108)

作者 大致
2025年8月6日 20:58

去重庆之前,我把属于自己的BUG都改完了,而项目的BUG还剩3个。我满心以为他们能在4天里把剩余的BUG改好,这样的就不用回伊尔廷一下飞机就加班了。
结果,这帮人改好1个,又新测出了3个,我还在重庆观音桥喝冷饮的时候就收到了PM的电话,确认6月29日的加班。
其中一个新增的BUG确实诡异,现象是播放视频的过程中突然崩掉。这几个人实在太勤快了,4天时间写了2000多行的代码,因为没有头绪,所以只能一版一版回退,然后差分定位问题。光是找原因就花了一周。
原来是leader小雨嫌视频的加载过程太慢,想出了给每帧各自起一个线程加载的大聪明办法。通常来说这种用资源换时间的做法倒也无可厚非,只不过我们自行开发的那个写日志的DLL自从2008年以来就没更新过,是进组时间仅次于我的第二老的家伙。当初写DLL的哥们根本没想到会被这么用,接入线程的最大数随手写了个32。
源代码倒还在,不过升级的成本有点高。直接把线程里的写日志注掉了事。
这么个破玩意儿改了6天,心情大坏。

另外一个BUG是视频保存的处理太慢。看下现象,打开任务管理器瞅一眼就知道原因了。
跟小木头说:“内存满了。想办法加快写的速度。每帧单独落盘,或者弄个磁盘映射试试。”
小木头的回复出乎我的意料:“大致哥,什么是磁盘,什么是内存?大的那个是磁盘,小的那个是内存,对吗?”
“在你的开发机上可以这么理解。”
“那手机上呢?”
“手机厂商现在比较缺德,都给都叫成内存了,实际上以前叫内存和闪存。叫运存那部分没问题,剩下那块爱咋叫咋叫吧。”
“那换你怎么叫?”
“Memory和Storage。”

疫情之前的那一年,公司邮件推荐过一家培训机构,考职业资格证有优惠。对我们来说有意义的是健康管理师、人力资源师、导游之类门槛低又能抵税的证。好事的女同事们有不少人报名参与。考过的话补贴加上抵税省的钱,减去报名费,还略有盈余。只是这家培训机构跟公司的合作只有一年,后续她们每年都是在群里报新的培训,跟公司没什么关系了。
忽然有一天,政策变了,国家的补贴是没了还是变少了什么的。培训机构也随之变了脸,只给发教材和网课网址,甚至有几门课都没给考试报名。同事找过去,先是推脱,继而跑路了。
有人一怒之下打了12345,也有人报了警。报警之后统计了一下(我们部门的)受害者名单,然后也没了下文。
又过去一年。上个月忽然有110给牵头的小琳打电话,让她去公安局了解情况。这路子太像诈骗了,她也没搭理。最后警察叔叔打到了公司前台,算是正式发出了协助调查的邀请。
小琳于是只好请了半天假去了公安局。原来,是培训学校在政府部门的内线出了问题——给不具备考试资格的学员非法安排考试资格(比如高级心理咨询师本来需要前置条件,但是该培训学校在内线的安排下交钱就能考),连带着搜集一下培训学校违法的证据。
小琳顺便问一下,钱能不能给退。
答曰等着吧。并且友情提示,让回来后别的同事也注意随时接110电话,配合调查。
几个老娘们就以这个为由,申请带手机进开发间。PM睁一眼闭一眼同意了。
这一个月过去了,并没有任何一个人接到110来电。
也许是因为只有小琳自己报了高级心理咨询师吧。

走廊对面的开发间被另外的部门占据了。又是一个严格要求控制手机的项目,他们比我们更惨,手机放在类似澡堂子里那种透明的抽屉里,谁手机没锁一目了然。而我们好歹还是不透明的铁皮柜子。
这个部门有很多年轻的妹子。不知道公司现在的着装规定是不是过期了,这帮妹子经常穿吊带上班。也有穿凉拖的。也有把头发焗成粉色蓝色绿色的。甚至还有纹身和打鼻环的。
难到我们公司收购了某个商K?
这帮妹子穿着打扮方面违反规定跟我半毛钱关系也没有,只是看着不忿。但有一样违规是实实在在妨碍到我了。
这些人不按规定在食堂吃饭,非要在开发楼层吃。

你以为我要抱怨饭味儿?错!
我忍不了的是,这帮人吃完饭要在洗手间聚众刷碗!三个面池全占,边刷边聊,特别的慢!这导致了我中午上完厕所没法洗手!我总不能站在她们身后一直盯着屁股看吧。
尿个尿而已,为此走到别的楼层去洗手又特别不甘心。
没办法,只好拉长上午带薪拉屎的时间,尽量排空了。

7月25、26日(周五、周六)时代少年团在伊尔廷开两场演唱会。
演唱会的票那是一定没抢到的。问了个比较靠谱的票贩子,给的报价是,480的山顶票4000;680的票最抢手,6000;1680的性价比最高,只要12000。但是,不保证有,票贩子也得乖乖去主办方那里排号。
那就只好去你妈的了。
7月22日臭宝高中学校报到。去报到前,让臭宝把考完试做的美甲给卸了。她们娘俩做好了约定,演唱会臭宝要去场外,去场外前要把美甲再做回来。
报到当天(周二),衔接班更改了上课时间,12:30到晚上20:30,这样她就没有时间去做美甲。
接下来的周三和周四又都是有其他学校报到,上课时间同样变成12:30到20:30。
这样一来,臭宝就没有时间做美甲了。是的,我此时才知道做个美甲要2~4个小时甚至更久。
为了不耽误课的同时还能做上美甲,娘俩在某音、某团和小某书上找到半夜,找到一家早上8:30就开门营业并且有优惠价的美甲店。这样臭宝周四上午去做美甲,后面的课完全不耽误。
只是这家店所在的地方有点偏,臭宝之前从没去过,让她自己去我们两口子都不放心。
于是决定,我请假半天,带臭宝去做美甲。
一个皆大欢喜但只有我受伤的世界达成了。

注:夫=大姨夫。

如何在本地调试WordPress时忽略对wordpress.org的网络连接请求

作者 大致
2025年3月13日 10:43

本地调试WordPress时,为了保证代码的正确性,插件和主题作者往往会打开wp-config.php里的WP_DEBUG开关。如果您不知道这个开关,就不要往下看了。

define('WP_DEBUG', true);

这样PHP运行时的错误和警告就会以醒目的字体直接打印到网页上。
20250313_WP_local_debug_warning

但是这样会带来一个程序员的日经问题:是我的BUG我改,不是我的BUG莫挨老子!
按说WP这种成熟的产品是不会让用户看到警告和错误的。但是,由于众所周知的原因,WP内核、主题和插件升级所需要的WordPress的官网wordpress.org时灵时不灵,连不上的时候就会显示大面积的警告信息。
安装完成以后,后台这种需要连接到wordpress.org的地方大抵有4种:core update、theme update、 plugin update和translation api,出现在后台Dashboard、 Plugin、 Theme、 和Settings页面。其中Dashboard会调用前三种Update,Settings四种都会调用。
这些信息不仅是影响对于出错代码的判断(比如图中提示的“Cannot modify header information”,其实根本就不是本地header的问题),还会直接影响页面元素的渲染和操作。
那就必须要干掉它!

再次更新,

define('WP_HTTP_BLOCK_EXTERNAL', true);

这个宏屁用没用,还是得用我下面的方法。

开整。

//下面的action钩子调用的早,所以在加载主题或插件的时候就要直接remove掉,否则没机会了。
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
    remove_action('admin_init', '_maybe_update_core');
    remove_action('admin_init', '_maybe_update_plugins');
    remove_action('admin_init', '_maybe_update_themes');
    remove_action('init', 'wp_schedule_update_checks');

    //translations_api默认会返回false,之后会访问wordpress.org,返回空数组之后就不访问了。
    //Since 4.0.0
    add_filter('translations_api', '__return_empty_array');
}

//调试者作为admin,默认是有各种update权限的。这里令各种内部调用user_has_cap询问4种权限的结果强行置为false。
function _debug_ignore_wp_request ($allcaps, $caps, $args){
    $server_caps = array('install_languages', 'update_themes', 'update_plugins', 'update_core', 'install_themes', 'install_plugins');
    foreach ($caps as $cap) {
        if ( in_array($cap, $server_caps)) {
            $allcaps[$cap] = false;
        }
    }
    return $allcaps;
}

function my_admin_init {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        //下面的钩子很多不能移除得太早。
        //宁杀错不放过。
        remove_action('upgrader_process_complete', 'wp_update_plugins');
        remove_action('upgrader_process_complete', 'wp_update_themes');
        remove_action('load-plugins.php', 'wp_plugin_update_rows', 20);
        remove_action('load-themes.php', 'wp_theme_update_rows', 20);
        remove_action('load-plugins.php', 'wp_update_plugins');
        remove_action('load-themes.php', 'wp_update_themes');
        wp_unschedule_hook('wp_version_check');
        wp_unschedule_hook('wp_update_plugins');
        wp_unschedule_hook('wp_update_themes');

        remove_action('wp_version_check', 'wp_version_check');
        remove_action('load-plugins.php', 'wp_update_plugins');
        remove_action('load-update.php', 'wp_update_plugins');
        remove_action('load-update-core.php', 'wp_update_plugins');
        remove_action('wp_update_plugins', 'wp_update_plugins');
        remove_action('load-themes.php', 'wp_update_themes');
        remove_action('load-update.php', 'wp_update_themes');
        remove_action('load-update-core.php', 'wp_update_themes');
        remove_action('wp_update_themes', 'wp_update_themes');
        remove_action('update_option_WPLANG', 'wp_clean_update_cache', 10, 0);
        remove_action('wp_maybe_auto_update', 'wp_maybe_auto_update');
        add_filter('user_has_cap', '_debug_ignore_wp_request', 10, 3);
    }
}

add_action('admin_init','my_admin_init');

完事。这个世界清净了。


  • (1):农历每年冬至所在的月固定为十一月。如果两个冬至间有13次朔望,则该年产生闰月。13个月中,第一个没有二十四节气里的偶数节气的月份就是闰月。因为十一月是起调点,所以农历十二月和正月是不会出现闰月的,正月初一和第一个节气春分受的影响也很小。我数学不好,但查表得到的结果,从1950年到2069的120年间,闰年就是双春,双春就是闰年,一一对应,无一例外。闰月是典型的用太阳历调整月历的规则,所以农历是阴阳历而不是纯阴(月)历。
❌