分类目录归档:技术

globe 895580 640

LinkShare 插件用到的国际化代码

// 初始化代码
function i10n(){
    $current_locale = get_locale();
    if(!empty($current_locale)){
        $mo_file = dirname(__FILE__).'/languages/'.$current_locale.".mo";
        if (@file_exists($mo_file)&& is_readable($mo_file))
            load_textdomain('link-share',$mo_file);
    }
}
add_action('init','i10n');

上述代码为帮助插件读取 .mo 的语言文件

Text Domain: link-share
Domain Path: /languages

上述代码设置插件默认的文本域标识和默认的语言文件路径

// 返回值,不输出
__( 'New','link-share')
// 直接输出
_e( 'New','link-share')

上述代码为输出翻译后的结果的代码

wechat pay

微商是个好东西

微商是个好东西

微商,大家都不陌生,关于定义,我就不再赘述,如果还有不了解,可以看看来自维基百科的解释
说微商是个好东西,我主要基于以下两点:

  1. 微商降低了开店的成本:在过去的很多年里,我们想要售卖货物,就想要到街边租一间商铺,来摆上我们的货物,去售卖我们的商品;后来,淘宝的出现让我们的开店成本近一步降低,一部电脑就是一个店铺;再后来,微商的出现,借助于有赞等平台,我们将开店的成本再一次的降低,现在,一部手机,便可以开店。
  2. 微商合理的利用了用户的个人信用:在淘宝、天猫这样的平台上,你基本上是赚陌生人的钱,这让你很难和客户建立起良好的联系和信任。而依托于朋友圈的微商则可以通过不断的在朋友间口口相传来获取流量,赚取身边人的钱。从某种意义上来讲,实现了购物的分布化。

希望微商可以好好活下去。
 

javascript

使用 JavaScript 来导出 CSV

由于要做一个 UserScript 用到了这个功能,便顺便记录下来。
数组结构

var data = [
{
"title" :value,
"href" : value
},
...
]

生成 CSV 字符串

function convertArrayOfObjectsToCSV(args) {
        var result, ctr, keys, columnDelimiter, lineDelimiter, data;
        data = args.data || null;
        if (data == null || !data.length) {
            return null;
        }
        columnDelimiter = args.columnDelimiter || ',';
        lineDelimiter = args.lineDelimiter || '\n';
        keys = Object.keys(data[0]);
        result = '';
        result += keys.join(columnDelimiter);
        result += lineDelimiter;
        data.forEach(function(item) {
            ctr = 0;
            keys.forEach(function(key) {
                if (ctr > 0) result += columnDelimiter;
                result += item[key];
                ctr++;
            });
            result += lineDelimiter;
        });
        return result;
    }

生成 CSV 文件,并下载

function downloadCSV(args) {
        var data, filename, link;
        var csv = convertArrayOfObjectsToCSV({
            data: data
        });
        if (csv == null) return;
        filename = args.filename || 'export.csv';
        if (!csv.match(/^data:text\/csv/i)) {
            csv = 'data:text/csv;charset=utf-8,' + csv;
        }
        data = encodeURI(csv);
        link = document.createElement('a');
        link.setAttribute('href', data);
        link.setAttribute('download', filename);
        link.click();
    }

 
 
代码来源:https://halistechnology.com/2015/05/28/use-javascript-to-export-your-data-as-csv/

code 1076536 640

如何让 HTML5 的 Video 标签中的 poster 占满整个区域?

在帮导师上传视频时,遇见了一个问题
为了让页面不那么空白,在放置 Video 标签时,我添加了 Poster 属性,从而使视频未播放时,可以正常的显示一张图片。一方面可以保持原有的体验不变(这里之前就是一张图片)。
但是当我真正放好了以后,发现一个问题,就是 Poster 无法完整的覆盖整个区域,大概就是填满我下方截图中所圈出的区域。两侧会有留白。而我的 CSS 是有边框的,所以会非常的丑。
一开始,我认为是 Poster 的比例问题,但是在我按照播放器的比例来切割 poster 尝试多次无果之后,我觉得问题不是出在这里。
4ym5p
问题出在哪里我目前还不清楚,无空深究,这里只把解决方案贴出,具体的原因待以后有空再来深究。

可行方案

当前的方案是采用的 background 来实现的。
首先,删除 video 标签的 poster 属性,然后将其 preload 属性设置为 none,
接下来,添加 CSS 代码

 video {
   background: transparent url('video-image.jpg') 50% 50% / cover no-repeat ;
 }

实现后的效果如下
luse8
跳变的原因不明,后续研究。
[title]Todo[/title]

  1. 搞清楚为何 Poster 没有占满
  2. 搞清楚为何出现跳变

[title]拓展阅读[/title]
https://stackoverflow.com/questions/10826784/make-html5-video-poster-be-same-size-as-video-itself

google 76517 640

Google 搜索结果导出 CSV

初衷

由于需要统计某个网站中包含特定关键词的文章,该工作借助 google 搜索引擎的特殊语法来完成。

site: domain intitle:keywords
Code language: CSS (css)

但是结果较多时,依次复制粘贴至 Numbers 中较为麻烦,便制作了该脚本,来快速导出搜索结果。

特性

  • 导出 Google 搜索结果为 CSV 文件

安装方法

  1. 在 Chrome/Safari 上安装 TamperMonkey (Firefox 为  Greasemonkey)
  2. 访问下载地址进入到插件页面
  3. 点击页面上的安装此脚本

使用方法

  1. 搜索后,在搜索结果页的左侧会出现一个下载搜索结果
  2. 点击按钮后,设置保存的文件名,即可将搜索结果导出为csv

结果默认导出 title 和 link

补充说明

使用时建议调整搜索设置,将搜索结果设置为100条,效果更好。

film 1668918 640

如何处理 TS 文件?

TS 文件是现在在移动端用的比较多的视频格式。
下午导师转发给我一个链接,希望我能把链接中的视频放在会议的官网。自然没有拒绝
晚上回来审查了下元素才发现原来是 ts 文件,以往没有处理 ts文件的经验,今天顺便记录下

下载 TS 文件

TS 文件的命名很有规律,一般都是 xxx-01.ts 到 xxx-99.ts 具体的数目取决于视频的大小。你可以通过 Google Chrome 的开发者工具来看最终有多少个文件。
然后,可以使用下面的命令来一键下载

wget -r http://www.example.com/filename-{1..99}.ts

这样我们就成功的下载了这个视频的所有分片。

部分视频网站可能会有一些检测的机制,可能会比较麻烦

合并 TS 文件

下载完成后,我们就要来合并 TS 文件了。使用下面的命令,就可以合并文件了

echo 'filename-'{1..99}.ts | tr " " "\n" > tslist
while read line; do cat $line >> filename-all.ts; done < tslist

通过上述的命令,我们可以把99个ts文件合并成为一个 filename-all.ts 文件,这个ts文件就可以借助播放器来直接播放了。

将 TS 文件转码为 mp4 文件

这里为了方便浏览和兼容,我将 ts 文件转为 mp4 格式,代码如下

ffmpeg -i source.ts -acodec copy -vcodec copy target.mp4

 

延展阅读

https://gistpages.com/posts/download-streaming-video-ts-files

QQ Qzone marketing

批量删除 QQ 空间说说的 JS 代码

var delay = 1000;function del() {    document.querySelector('.app_canvas_frame').contentDocument.querySelector('.del_btn').click();    setTimeout("yes()", delay);}function yes() {    document.querySelector('.qz_dialog_layer_btn').click();    setTimeout("del()", delay);}del();

在 Chrome 的调试控制台内执行即可。

fd4a959f23df

Swift 实现 横线样式的输入框

输入框样式的输入框是我们在做项目时经常会使用到的。除了引用一些第三方的库来实现这样的样式,我们还可以通过代码来实现这样的效果。
4vzey
具体的代码如下

func setBottomBorder(textField:UITextField){
        let border = CALayer()
        let width = CGFloat(1.0)
        border.borderColor = UIColor.white.cgColor
        border.frame = CGRect(x: 0, y: textField.frame.size.height - width, width:  textField.frame.size.width, height: textField.frame.size.height)
        border.borderWidth = width
        textField.layer.addSublayer(border)
        textField.layer.masksToBounds = true
    }

调用时,使用

@IBOutlet weak var firstPagePhone: UITextField!
 setBottomBorder(textField: firstPagePhone)