December Headline: Python on its way to become TIOBE's language of the year for the fourth time

排名编程语言Ratings同比上月
1C16.48%+0.40%
2Java12.53%-4.72%
3Python12.21%+1.90%
4C++6.91%+0.71%
5C#4.20%-0.60%
6Visual Basic3.92%-0.83%
7JavaScript2.35%+0.26%
8PHP2.12%+0.07%
9R1.60%+0.60%
10SQL1.53%-0.31%
11Groovy1.53%+0.69%
12Assembly language1.35%+0.28%
13Swift1.22%-0.27%
14Perl1.20%+0.30%
15Ruby1.16%-0.15%
16Go1.14%+0.15%
17MATLAB1.10%+0.12%
18Delphi/Object Pascal0.87%-0.41%
19Objective-C0.81%-0.39%
20PL/SQL0.78%+0.04%
21Rust0.78%--
22SAS0.77%--
23Classic Visual Basic0.71%--
24Scratch0.67%--
25Transact-SQL0.59%--
26Julia0.56%--
27Lisp0.55%--
28Logo0.51%--
29D0.50%--
30ABAP0.47%--
31Dart0.45%--
32Fortran0.45%--
33COBOL0.43%--
34Ada0.40%--
35Prolog0.40%--
36Scheme0.37%--
37Scala0.36%--
38VHDL0.34%--
39PowerShell0.34%--
40Kotlin0.32%--
41(Visual) FoxPro0.30%--
42TypeScript0.30%--
43Lua0.30%--
44Alice0.28%--
45LabVIEW0.26%--
46ML0.26%--
47Apex0.25%--
48Crystal0.25%--
49Solidity0.24%--
50Tcl0.23%--

对于选项的答案为是/否的选项, 大家是会用一个checkbox还是两个radio框? 哪个会更合理? 为什么?
最近看到一篇文章是关于这个问题的,发现挺有意思的.为此做个总结记录.有人在Twitter上发布该问题的讨论,摘选了些比较有用的观点. 相信在看过这些别人的观点后, 你会更清楚在什么情况下使用哪种类会更加合适.以下为一些用户的评论观点:

  • 对于checkbox, 如果他没被选中, 那么有两种可能:一个是用户就选择否,一个是用户落了该选项. 而对于radio,否就是意味着用户选择了否
  • 如果我无法推断哪个是默认值时,我会使用2个radio.比如问题"你是中国公民吗?",此时提供是/否单选框,而不是一个checkbox
  • 看措辞: checkbox - 在陈述语句中(如'我已同意条款')
    radio - 在疑问句中(如'你阅读并同意条款了吗?')
  • radio相当于是一个必选项, 需要经过认真思考, 而checkbox更像是一个可选项,用户可以跳过不用很仔细在意.


参考文章(https://www.sarasoueidan.com/blog/one-checkbox-or-two-radio-buttons/)

怎么最简单,快速将多维数组展开平铺为一维数组? 以下为博主的总结供参考:分为平铺展开的深度为2和全部平铺展开的:

先假设有个待展开数组:

$arr = [
    'a' => [
        'a1' => 'nice100.net',
        'a2' => 'good',
    ],
    'b' => [
        'b1' => [
            'b11' => 'nice',
            'b12' => 'like',
        ]
    ]
];
  • 平铺展开的深度为2:
//方法一
$result = call_user_func_array('array_merge', $arr);
//方法二(会更快)
$result = array_merge(...array_values($arr));
//结果输出
Array
(
    [a1] => nice100.net
    [a2] => good
    [b1] => Array
        (
            [b11] => nice
            [b12] => like
        )

)
  • 全部平铺展开
//如果要全部平铺展开,那么对于多维数组, array_merge函数就不能满足了,需要办理递归
$re = [];
array_walk_recursive($arr, function ($v, $k) use (&$re) {
    $re[$k] = $v;
}, $re);
//输入结果,注意如果存在相同的key,那么后者会覆盖前者
Array
(
    [a1] => nice100.net
    [a2] => good
    [b11] => nice
    [b12] => like
)

首先说下博主出现这个报错的情形:自己使用是谷歌浏览器,访问谷歌网址, 浏览器使用了科学上网插件. 如果和我的情形一样,那么博主的办法可参考下.
经过排查发现是dns污染的问题.以下为排查教程;

  • 先确认下科学上网的插件是否正常工作
    比较简单的一个办法就是,点击该插件然后点击访问该插件的谷歌应用商店,如果能访问那么说明你的科学上网没问题, 继续下一步.
  • 修正自己电脑上的dns地址
    查看下自己电脑当前的dns服务器用的ip是多少(怎么查看因为操作系统方法也不同,故不做详述自行搜索), 建议更换为114.114.114.114 和 223.6.6.6 这两个都是国内比较大的dns服务,后者为阿里的. 更改保存后, 然后刷新下本机的dns(刷新也请自行搜索)
  • 最后但同样重要,重启下浏览器
    这里说下遇到的一个坑, 在开始遇到报错时, 我也绝得是dns的,所以一开始就dns调整为合适了,然后直接再重试访问,当然还是访问失败, 就以为不是dns的问题,即使我也想到清理了下网页缓存, 但还是同样的报错, 最后试了一大圈,才发现浏览器重启了,就能正常访问, 所以建议浏览器最好重启下再重新访问试下. 就因为没重启才导致这个小问题没能快速解决.

第二编辑

  • 最近发现好像有些情况以上步骤也无法解决. 最后发现根本原因是科学上网插件本身有问题.用的是谷歌访问助手浏览器插件(Ghelper),发现如果换成其他科学上网插件,dns也不用刷新,就可以成功科学上网.所以如果你在尝试刷新dns后还是不能科学上网(如果不想翻墙,关闭翻墙软件就能解决这个报错了), 那么你需要怀疑下你的科学上网梯子是不是坏了(谷歌访问助手最近就是时不时抽疯).igg谷歌访问助手,亲测目前能用,有需要的也可尝试下.