主题更换

博客已将主题更换至 WP 官方的 2015。

可能会有一些错位问题,请尝试 Ctrl+F5;另外如果新主题有错位什么的请务必告知。

因为这个主题不会显示文章摘要,装了个「Advanced Excerpt」,感觉有点蠢,如果文章比较短也会显示唔…

总之,新的一年里也请多多指教啦~ .. 閱讀全文

[易语言] 利用构建宏自动填充构建版本和时间

易语言的构建宏如上图。需要易语言 5.3。

照着自带的 cpp 例程源码看了看,感觉移植到易语言的话应该不难。

不费话了,直接上源码。可黑月,已经编译好了一份可以直接拷贝到易语言的 plugins 目录直接用。

易语言 5.3 构建宏插件 (带源码, 可黑月).rar

16k

2015.03.26

原创

需要易语言 5.3

.. 閱讀全文

jjBot – 腾讯机器人

项目地址:JixunMoe/jjBot

目前聊天模块由 NijiharaTsubasa 进行开发,我负责代码审核 & 挑毛病。请务必放过他,他才刚开始学 JS(被我拉下水?)。

聊天插件开发原因其实是因为其旧版本非常不智能,重复发言导致隔三差五的被腾讯官方封号我也是醉了…

主要功能:

  • 一个简单、能用的没有使用框架搭建的一个乱糟糟的前台。
  • 能抓取消息,并自动回复。
  • 能聊天 (编写中)。

然后… 没别的了 :<

最新版压缩包下载 (建议通过 Git 下载,可一键更新):点我

不得不吐槽下度娘,根本搜不到好用的代码,能搜到的都是一些 IE6 时代总结的代码;比如使用正则删除首尾的空白字符,使用 eval 合并正则表达式… 他发过来的 PR 也因此没过(。

2015.03.26 更新:计划于四月初抽两天看看,运气好的话能重构个挂机机器人。 .. 閱讀全文

利用 HTML5 Canvas 绘图

绘图指的是公式作图;目前能实现 y = f(x) 的绘图,即只能同时绘制一个点。如果需要画圆,则需要两条公式,以及指定区间避免报错。

graph

上图是一个简单的 y = x3 绘制,相关代码如下:

/// 配置参数
var ptOrigin  = [250, 250]; // 原点相对图层位置
var drawSize  = [500, 500]; // 图层高宽
var zoomScale = [80,  20 ]; // 放大比例 (1 则表示一个像素为一个单位, 建议大数字)
var labelStep = [1,   3  ]; // 标记轴的区间

// 清空当前文档 (可选)
// document.body.textContent = '';

// 图表主元素
var graph = document.createElement ('canvas');
var ctx = graph.getContext('2d');
document.body.appendChild(graph);

graph.width  = drawSize[0];
graph.height = drawSize[1];

// 计算绘图区间
var drawRangeX = [ -ptOrigin[0]  / zoomScale[0], (drawSize[0] - ptOrigin[0]) / zoomScale[0] ];
var drawRangeY = [ -(drawSize[1] - ptOrigin[1]) / zoomScale[1], ptOrigin[1]  / zoomScale[1] ];

/// 清空图表
function clearGraph () {
    ctx.lineWidth = 1;
    ctx.fillStyle = '#EEE';
    ctx.fillRect(0,0,drawSize[0],drawSize[1]);

    /// 绘制 x-轴
    ctx.beginPath();
    ctx.moveTo(0, ptOrigin[1]);
    ctx.lineTo(drawSize[0], ptOrigin[1]);
    ctx.stroke();
    ctx.closePath();
    labelX();

    /// 绘制 y-轴
    ctx.beginPath();
    ctx.moveTo(ptOrigin[0], 0);
    ctx.lineTo(ptOrigin[0], drawSize[1]);
    ctx.stroke();
    ctx.closePath();
    labelY();

    // 绘制原点
    ctx.textAlign = 'left';
    ctx.textBaseline = 'top';
    ctx.fillStyle = 'black';
    ctx.font = '9px Ubuntu';
    ctx.fillText('0', ptOrigin[0] + 2, ptOrigin[1] + 2);
}

/// 用来作图的公式
function fn (x) {
    return x*x*x;
}

// 大字体与小字体
var fontNormal = '20px Ubuntu';
var fontScript = '12px Ubuntu';
function drawCubeEquation () {
    ctx.textAlign    = 'left';
    ctx.textBaseline = 'alphabetic';

    var margin  = [10, 20];
    var padding = [30, 20];

    var s1 = 'y = x';
    var s2 = '3';

    ctx.font = fontNormal;
    var m1 = ctx.measureText(s1).width;
    ctx.font = fontScript;
    var m2 = ctx.measureText(s2).width;

    /// 绘制边框
    var baseX = drawSize[0] - margin[0] - padding[0] * 2 - m1 - m2;
    var baseY = margin[1];
    ctx.beginPath();
    ctx.fillStyle = 'rgba(255,255,255,0.7)';
    ctx.rect(baseX, baseY, drawSize[0] - margin[0] - baseX, padding[1] * 2);
    ctx.fill();
    ctx.stroke();

    /// 依次绘制
    ctx.fillStyle = 'black';
    ctx.font = fontNormal;
    ctx.fillText(s1, drawSize[0] - m1 - m2 - margin[0] - padding[0], margin[1] + padding[1] + 8);

    ctx.font = fontScript;
    ctx.fillText(s2, drawSize[0]      - m2 - margin[0] - padding[0], margin[1] + padding[1]);
}

/// 映射坐标点到绘制图层的点
function mapX (x) {
    return ptOrigin[0] + zoomScale[0] * x;
}

function mapY (y) {
    return ptOrigin[1] - zoomScale[1] * y;
}

function mapPt (x, y) {
    return [mapX(x), mapY(y)];
}

/// 初始绘制节点位置
function initPt () {
    return [mapX(drawRangeX[0]), mapY(fn(drawRangeX[0]))];
}

/// 标记 x-轴
function labelX () {
    var x, graphX, strX;

    var step = labelStep[0];

    ctx.textAlign = 'center';
    ctx.textBaseline = 'top';
    ctx.fillStyle = 'black';
    ctx.font = '9px Ubuntu';
    var maxRange = Math.max(-drawRangeX[0], drawRangeX[1]);
    for (x = step; x < maxRange; x += step) {
        ctx.beginPath();

        graphX = mapX(x);

        strX = Math.floor(x * 100) / 100;
        ctx.moveTo( graphX, ptOrigin[1] - 5 );
        ctx.lineTo( graphX, ptOrigin[1] + 5 );
        ctx.stroke();
        ctx.fillText( strX, graphX, ptOrigin[1] + 7);

        graphX = mapX(-x);
        ctx.moveTo( graphX, ptOrigin[1] - 5 );
        ctx.lineTo( graphX, ptOrigin[1] + 5 );
        ctx.stroke();
        ctx.fillText(-strX, graphX, ptOrigin[1] + 7);

        ctx.closePath();
    }
}

/// 标记 y-轴
function labelY () {
    var y = 0;
    var graphY, strY;
    var step = labelStep[1];

    ctx.textAlign = 'left';
    ctx.textBaseline = 'middle';
    ctx.fillStyle = 'black';
    ctx.font = '9px Ubuntu';
    
    var maxRange = Math.max(-drawRangeY[0], drawRangeY[1]);
    for (y = step; y < maxRange; y += step) {
        ctx.beginPath();

        graphY = mapY(y);

        strY = Math.floor(y * 100) / 100;
        ctx.moveTo( ptOrigin[0] - 5, graphY );
        ctx.lineTo( ptOrigin[0] + 5, graphY );
        ctx.stroke();
        ctx.fillText( strY, ptOrigin[1] + 7, graphY);

        graphY = mapY(-y);
        ctx.moveTo( ptOrigin[0] - 5, graphY );
        ctx.lineTo( ptOrigin[0] + 5, graphY );
        ctx.stroke();
        ctx.fillText(-strY, ptOrigin[1] + 7, graphY);

        ctx.closePath();
    }
}

// 重绘图表
function redrawGraph () {
    clearGraph();

    /// 开始作图
    ctx.beginPath();
    var drawStep  = 1 / zoomScale[0];
    ctx.moveTo.apply(ctx, initPt());
    for (var x = drawRangeX[0]; x < drawRangeX[1]; x += drawStep) {
        ctx.lineTo(mapX(x), mapY(fn(x)));
    }
    ctx.stroke();
    ctx.closePath();

    // 绘制公式文字
    drawCubeEquation();
}

redrawGraph ();

演示地址:JS Bin .. 閱讀全文

[黑科技] o!DD Reload Build 04

o!DD 是一个非官方 osu! 游戏内非撒泼特直接下图插件, 英文全名为 [Un-official osu! In-game Direct Download Mod]。

采用最先进的 DLL 注入及 API-Hook 技术制作,质量有保障。

当前最新版: o!DD Reloaded Build 04
界面完全重写, DLL 也因此更新了些内容[加大效率] :3
主要是利用易语言自身的一些特性实现的性能增加, 如以前跨进程传参会处理字节集光是那几次拷贝内存就效率低了 :3
– 加入了多语言, 自行更改 lang/xx-xx.ini 即可 :3
– 方便学校使用, 可手动指定 osu 路径导图 :3

o!DD Reload Build 04

Jixun.org

超稳定, 界面清爽 :3

待定事项 [TODO]:

  • 已完成 :3 重写界面, 因为 EXE 本体源码丢失.
.. 閱讀全文

IcoFX 2.10

无需破解程序本体,直接输入序号即可。用户名随意。

IcoFX 2.10

FORRU-BOARD-WDWDW-D4ZXV-EYJ13 - Business License / 企业授权
FORRU-0XVEY-WD4V0-BOARD-WDAVS - Site License / 站点授权
FORRU-0EYXV-4V000-BOARD-WD0IL - Home License / 家庭授权

官网下载 .. 閱讀全文

IcoFx 2.5 + 补丁

IcoFx 2.5

软件简介
IcoFX 是一款专业的图标编辑工具,内置 40 多种效果和滤镜,具备强大的亮度、对比度、饱和度、色调等调整工具,让您可以轻松创建、修改、提取、转换图标及光标。

软件功能
轻松创建图标光标:支持几乎所有图标格式及静态、动画光标,支持 Windows 和 Macintosh 图标相互转换。
批量处理多个文件:使用批量处理功能,可轻松完成多个文件图标或光标的创建、转换、提取或导出等操作。
支持多种效果滤镜:支持超过40种效果和滤镜,并提供直观的颜色校正工具集,让您可以轻松调整颜色参数。
支持图像图层操作:允许用户进行图层排列、混合和改变不透明度等操作,方便用户对图像进行修饰和处理。
导入导出提取功能:支持从程序文件提取图标,可轻松实现图像、图标光标间相互转换,支持常见图像格式。
集成多种实用工具:提供多种资源及图像编辑工具,可实现对图标及光标文件的轻松快捷、周到全面的处理。

官方最新 | IcoFx 2.5: 度娘盘 | Adf.ly

IcoFx.2.5.patch.XenoCoder.7z

2014-7-7

浩瀚的宇宙

15K

.. 閱讀全文

gulp 文件疊加插件

有什麼用?

能在你 pipe 檔案的時候預留一份到內存,然後再悄悄取出來還原。

使用到的場景:使用兩個不同的配置的 uglify js 來編譯、版本 1 僅合併文件而無需壓縮但是需要將一些字替換掉 (我這裏需要把 DEBUG 換成 false,然後編譯一份 min 版)。

總之 很簡單的一個小插件 :3

/* jshint node: true */
'use strict';

var through = require('through2');
var gutil   = require('gulp-util');

var stackPlugin = function () {
    // 疊加儲存用的內存
    this.stack = [];
};

/**
 * 疊加文件到內存
 */
stackPlugin.prototype.push = function () {
    var self = this;

    var stream = through.obj (function (file, enc, cb) {
        if (file.isStream()) {
            this.emit('error', new gutil.PluginError('gulp-stack',  'Streaming not supported'));
            return;
        }

        if (file.isBuffer()) {
            self.stack.push (file.contents);

            this.push(file);
            cb();
        }
    });

    return stream;
};

/**
 * 從內存取出疊加的文件
 */
stackPlugin.prototype.pop = function () {
    var self = this;

    var stream = through.obj (function (file, enc, cb) {
        if (file.isStream()) {
            return this.emit('error', new gutil.PluginError('gulp-stack',  'Streaming not supported'));
        }

        if (file.isBuffer()) {
            file.contents = self.stack.pop();

            this.push(file);
            cb();
        }
    });

    return stream;
};

module.exports = stackPlugin;
.. 閱讀全文

螺丝儿的好新闻第九季

第九季在几年之后终于出现了。

Russell.Howards.Good.S09E01

自己抓取的视频,双语字幕巨赞制作中。

Russell Howard 的好新闻是一个专注于吐槽新闻三十年的英国产喜剧节目。Russell Howard 会在节目对各处当前最热门的新闻进行无下限吐槽,新闻来源包括并不限于网络、杂志、新闻。与此同时,每集节目都会邀请当前新闻出现过的人物作为神秘嘉宾登场,并在节目结尾宣传正能量新闻。

—— 以上译自维基百科,以及自己的一些补充。

在线播放

中英双语外挂字幕更新第二集;学生党表示没时间

另外终于找到校对了! 就是绿茶扯淡群的草喵。

好新闻 第九季 (完结)

2014-9-27

自抓自传自翻, 转载请注明出处, 谢谢 :3

提取:RHGN / 压制 喵喵子 / 校对 草喵 / 解压 jixun

  • A 站有人接手翻译了 我就不凑热闹惹; 上传片源就行,近期忙死了
.. 閱讀全文

新年快乐~送出 Win 下的 sudo

这东西有什么用

它能请求管理员权限执行某个指令。

和现有的解决方案不同,这东西非常纯净、便捷 (8.7K),也没有版权问题,也不需要什么乱七八糟的运行时。

用法

例如,在命令行可以直接输入下述代码编辑 hosts 文件而无需新开一个窗口:

sudo notepad %windir%/system32/drivers/etc/hosts

亦或者,不带上任何参数,启动管理员权限的控制台:

sudo

亦或者,你想集成到批处理自动获取管理员权限而无需右键使用管理员权限执行:

sudo --check
IF %ERRORLEVEL% EQU 1 (
    sudo "%~0" %*
    exit /b %ERRORLEVEL%
)

安装方式

sudo.exe 拷贝至 C:\Windows 即可,或拷贝到 %PATH% 指向的目录之一,或目标批处理目录下 (绿色纯净)。

另外,压缩包内置了源码,使用易语言 5.3 编译于 Windows 7。

sudo for Windows

10K

2014.12.31

本站原创

.. 閱讀全文