Balthild

Make an orange dream.

  • 首页
  • 关于
  • 作品
  • 留言板

PHP 去重合并多维数组

发表于 2016-06-24 | 分类于 设计/代码 | 没有评论

在网上找了会儿,发现并没有符合要求的代码,于是自己写了个。

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
function merge($arr1, $arr2) {
    $new = $arr1;
    // arr2 项覆盖 arr1 的同名项
    foreach ($arr2 as $key => $value) {
        if (is_string($key)) {
            if (is_array($value)) {
                $new[$key] = merge($arr1[$key], $value);
            } else {
                $new[$key] = $value;
            }
        } else {
            $new[] = $value;
        }
    }
    return $new;
}
 
$arr1 = [
    "color" => [
        "favorite" => "red",
        "a" => "a",
        "arr" => [
            1,
            2
        ]
    ],
    5
];
$arr2 = [
    "color" => [
        "favorite" => "green",
        "b" => "b",
        "arr" => [
            1,
            3
        ]
    ],
    10
];
$new = $this->merge($arr1, $arr2);
print_r($new);

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [color] => Array
        (
            [favorite] => green
            [a] => a
            [arr] => Array
                (
                    [0] => 1
                    [1] => 2
                    [2] => 1
                    [3] => 3
                )
 
            [b] => b
        )
 
    [0] => 5
    [1] => 10
)

关于「阻止运行」知识产权转移+闭源的事

发表于 2016-05-14 | 分类于 设计/代码 | 1 条评论

酷安里面仍然在撕逼,一边骂洗地,另一边叫嚣爱用用不用滚,总体是支持这次产权变更的人占多数。

原作者也发了话,看完之后思考了一下,权限增加的问题,无可非议,因为的确是必要权限。

但让我无法接受的其实是发生知识产权变更后,这个软件由开放源代码变为封闭源代码+私有著作权。我认为这对社区会造成非常不利的影响,甚至可能由于这个软件自身不太小的影响力,会扩大以Oracle为代表的开源项目封闭化的恶劣趋势。

不管怎样,我最终下决心开始学习Kotlin。不过,当然是高考之后。这原本是前几个月就在考虑的计划,只是当时尚且在犹豫应该选择先学习桌面平台还是移动平台的开发。我决定要自己造一个与「阻止运行」功能相似的轮子,只是为了这两个信仰——自由软件、开放源代码。

Long live GNU!

WordPress 已登录用户的顶栏导致的问题与解决方案

发表于 2016-03-06 | 分类于 设计/代码 | 没有评论

WordPress 会给已登录用户添加顶栏,同时为了让整体内容下移,而不至于被顶栏遮挡,它给 html 标签增加了一个 padding-top。这真是一个下策,给前端实现造成了巨大的麻烦。这里是我至今遇到过的两个问题:

1. 主题自己添加的固定顶栏被遮挡

很多主题会使用 position:fixed;top:0 来做一个页面滚动时保持在窗口顶端的顶栏。但是,如果登录了博客,这个顶栏就会被 WordPress 的顶栏 (#wpadminbar) 遮住。

解决方法:

首先把 body 标签改为如下形式:

PHP
1
<body <?php body_class(); ?>>

然后在 CSS 内给已登录页面的顶栏增加 top 值:

CSS
1
2
3
4
5
6
7
8
9
10
.logged-in #top-bar {
    position: fixed;
    top: 32px;
    left: 0;
}
@media screen and (max-width: 782px) {
.  logged-in #top-bar {
        top: 46px;
    }
}

2. 无法给元素使用 height: 100%

本来解决方法是给 html 和 body 添加 height: 100% 即可,但是现在 html 有一个 margin-top,导致添加后页面会出现难看的双重滚动条。

解决方法:在 body 里面增加一个包裹所有内容的 div,比如:

XHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DICTYPE html>
<html>
<head>
    <title>blabla</title>
</head>
 
<body>
<div id="frame">
    <div id="banner"></div>
    <!-- all content here -->
</div>
</body>
</html>

然后给这个 div 添加以下CSS:

CSS
1
2
3
4
5
6
7
8
#frame {
    width: 100%;
    height: 100%;
    min-height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    position: absolute;
}

这样它里面的元素 (div#banner) 就也可以使用 height: 100%; 了

WordPress 加速插件 MoeCDN

发表于 2015-12-23 | 分类于 设计/代码 | 1 条评论

一听这名字应该就能知道它是干什么的……

这个插件能加速 Gravatar / GoogleAPIs AJAX / GoogleAPIs Fonts / WordPress Emoji / WordPress.com 。

前三个应该都知道,第四个是 WP 4.3 中新增的资源,第五个主要是 Jetpack 插件在登录后加载的资源。

服务器由 MoeNet 提供。

Github: MoeNetwork/MoeCDN-WordPress

同时还有 typecho 插件 (由吟梦维护)和 emlog 插件 (由无名智者维护)

Screenshot_2015-12-23-10-09-40

MoeNetwork 新主页

发表于 2015-12-06 | 分类于 设计/代码 | 3 条评论

?其实前两天已经写完了的,今天才想起发……

布局设计参考了lingoys的设计,配色方案来自windyflat

网站:http://www.moenetwork.com

GitHub:https://github.com/MoeNetwork/homepage

MoeNetwork

新坑:一个简单的与化学元素相关的小游戏

发表于 2015-11-25 | 分类于 设计/代码 | 没有评论

做这个游戏是应化学老师要求……实现还是用我比较熟悉的前端技术来做。

大概的玩法是从元素周期表中取一些元素,挖空它的其中一个性质或属性,然后做简单的选择题。

单人模式每道题有时间限制,要在规定时间内选取正确答案;对战模式则是两人抢答。

这个游戏目的是让玩的人掌握元素周期表。

具体算法和实现嘛…暂时不知道怎么描述,放在GitHub下了:GitHub repo

WP jQuery Ajax Comments by Willan Kan 更新优化

发表于 2015-09-27 | 分类于 设计/代码 | 没有评论

想当年,Kan大神在WordPress界是叱咤风云的人物。可是他最后还是离开了WP,因为信仰不足受不了WP的臃肿。

而他写的Ajax评论提交更是在主题开发者中家喻户晓。很多优秀的主题,比如 Deve, Mossight 等的Ajax评论组件都是用的这段代码。

这个组件最后一次更新时,Wordpress版本尚是3.4。随着WP的升级,自然是会出现各种各样的问题。

我制作Seventeen时就照着注释,基于WP 4.0的wp-comment-post.php把它重写了。当时解决的主要问题是setcookie()函数用法错误和有一段代码已经改为使用nocache_headers()函数实现。

而最近打开了WP_DEBUG除错后发现里面还有sql数据查询方法wpdb::escape()已经被WP 3.6弃用的问题,解决方法是直接替换成esc_sql()函数即可刚才再次对比了wp-comment-post.php,发现WP用的并不是esc_sql(),而是wp_slash()。我不是很明白这样做的道理,用wpdb::escape()和esc_sql()是可以起到防止sql注入攻击的作用,但wp_slash()并无此作用。

这里放出修改后的代码。 已基于 WP 4.2 的文件将其重写。以下代码适用于 WP 3.6+

阅读全文

[停售] WordPress 响应式双栏博客主题 Seventeen (更新1.7)

发表于 2015-02-27 | 分类于 设计/代码 | 76 条评论

2015年8月注: Seventeen 所有知识产权已移交至 MoeTheme by MoeNet

这款主题的设计和制作历时半年,几乎是用去了我学习之外的所有业余时间。

主题售价49元,它是一款用心去设计和制作的主题,我相信它的价值能配得起您购买的花费。

阅读全文

让网站改变 Chrome 手机版的颜色主题

发表于 2015-02-03 | 分类于 设计/代码 | 没有评论

Screenshot_2015-02-03-21-20-22Screenshot_2015-02-03-21-20-26


如图,这是 Chrome 在 Android 5.0 中特有的功能,可以让网站定义 Chrome 的颜色主题

只需要在head标签内插入一句代码就可以了

<meta name="theme-color" content="#192222">

不过这个功能目前只能在 Android 5.0 上而且 Chrome 要打开合并标签页功能才能体现

Openshift 上的 WordPress AJAX 评论 500 错误

发表于 2015-01-26 | 分类于 设计/代码 | 1 条评论

原因是使用 Openshift Quickstart 来搭建的 WordPress 中,wp-content/themes 被链接到了 /app-root/data/themes

但是我们使用的时候仍然认为是 /app-root/repo/php/wp-content/themes ,因此在php中使用 require() 引用文件时就会出现错误

解决方法:

把 copmments-ajax.php 中的

1
require( dirname(__FILE__) . '/../../../wp-load.php' );

改为

1
require( dirname(__FILE__) . '/../../current/wp-load.php' );

为什么是 ../../current/ 呢?因为 /app-root/repo/php 也只是一个链接,它的真实位置在 /app-root/data/current ……

另外,如果在搭建的时候不是使用 Quickstart,而是自己上传 WordPress 文件,就没有这个问题

文章导航

1 2
轻歌

轻歌

65 日志
5 分类
0 标签
RSS

分类目录

  • 无聊/折腾
  • 未分类
  • 生活/记录
  • 简言/随笔
  • 设计/代码

书签

  • Alien's Blog
  • Andy1999
  • Awoer's Blog
  • Cyberiad
  • DIYgod
  • Everttylestevan
  • Kenvix's Blog
  • MoeNet Inc.
  • NetherCrowCSOLYOO
  • 吟梦酱の日记
  • 小羊儿的心情天空

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

AdSense

2019 Balthild
Proudly powered by WordPress
A fork of NexT.Pisces