Fork me on GitHub
一共有 61 篇文章,分页:8 / 13

nodejs安装脚本

#nodejs安装脚本(from http://yoyo.play175.com)

cd /tmp
#下载安装包
wget  -O nodejs-install.tar.xz https://nodejs.org/dist/v9.2.0/node-v9.2.0-linux-x64.tar.gz
#国内可以使用淘宝镜像
#wget -O nodejs-install.tar.xz https://npm.taobao.org/mirrors/node/v9.2.0/node-v9.2.0-linux-x64.tar.gz

#删除旧安装目录
rm -rf /usr/local/node 
#解压到到安装目录
mkdir -p /usr/local/node && tar -xf nodejs-install.tar.xz -C /usr/local/node --strip-components 1
#清理安装包
rm -rf nodejs-install*

#设定环境变量
cat > /etc/profile.d/node.sh << EOF
export PATH=/usr/local/node/bin:\$PATH
export NODE_PATH=/usr/local/node:/usr/local/node/lib/node_modules:/usr/local/node/share/javascript
EOF

#刷新当前环境变量
source /etc/profile

试试安装好没:

node -v

切换国内镜像

npm install nrm -g --registry=https://registry.npm.taobao.org
nrm use taobao

nginx部署let's encrypt脚本

下载

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

安装,根据提示,一步一步往下走就好了

cd /opt/letsencrypt
./letsencrypt-auto --nginx

let's enctypt的证书有效期是 3 个月,到期需要再执行一次命令,自动续期请参考这篇文章

Unity3D截屏/获取物体快照

void OnClick ()
{
    StartCoroutine(CaptureScreen());
}

IEnumerator CaptureScreen()
{
    yield return new WaitForEndOfFrame();

    Texture2D t = new Texture2D(Screen.width, Screen.height);
    //截取的区域,使用像素空间坐标 (0,0)是屏幕左下角
    t.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
    t.Apply();
    //把纹理数据转换为PNG格式
    byte[] bytes = t.EncodeToPNG();
    //保存
    System.IO.File.WriteAllBytes(Application.dataPath + "/" + Time.time + ".png", bytes);
}

主要用到了Texture2D.ReadPixels这个API,看一下来自ceeger的API说明

阅读全文 »»

C#简单实现泛型数组QSort

Talk is cheap,show me the code

public class UIPanel
{
    public int depth;
}

public class Test
{
    /***************快速排序功能****************/
    public delegate int QSortCompareFunction<T>(T a,T b);
    public static void QSort<T>(T[] array,QSortCompareFunction<T> compareFunc)
    {
        //排序算法: 插入排序
        for(int i = 1; i < array.Length; i++)
        {  
            T t = array[i];  
            int j = i;
            while( (j>0) && compareFunc(array[j-1] , t) > 0 )
            {
                array[j] = array[j-1];
                --j;
            }
            array[j] = t;
        }
    }
    /************快速排序功能结束***************/

    static int UIPanelSortBy(UIPanel a,UIPanel b)
    {
        if(a.depth > b.depth)return 1;
        if(a.depth < b.depth)return -1;
        return 0;
    }

    static void PrintArray(UIPanel[] panels)
    {
        System.Console.Write("[");
        for(int i = 0; i < panels.Length; i++)
        {
            if(i != 0)System.Console.Write(",");
            System.Console.Write(panels[i].depth);
        }
        System.Console.Write("]\n");
    }

    static void Main(string[]args)
    {
        UIPanel[] panels = {
            new UIPanel(){depth = 6},new UIPanel(){depth = 2},new UIPanel(){depth = 1}
            ,new UIPanel(){depth = 4},new UIPanel(){depth = 5},new UIPanel(){depth = 3}
            ,new UIPanel(){depth = 2},new UIPanel(){depth = 5},new UIPanel(){depth = 7}
        };

        PrintArray(panels);

        QSort<UIPanel>(panels,UIPanelSortBy);

        PrintArray(panels);
    }
}

PNG2JPG——一种在保留透明度的前提下压缩PNG为JPG的工具

工具名称:png压缩工具 使用说明:命令行方式使用,如:png2jpg.exe a.png b.png c.png (或可直接拖动多个png到图标上) ---by yoyo(//yoyo.play175.com)

png格式因为是无损压缩,所以文件相比于jpg格式会大很多,而jpg把对人眼不太敏感的像素去除,可以把图片压缩的很小,而jpg的缺陷就是没有alpha通道,不能作为半透明图片的存储格式。 我采用了网上广为流传的一种处理方式,那就是把RGB通道使用JPG压缩,然后再把alpha通道使用JPG压缩,放到一张2倍大小的图片里。 在使用时,代码中把RGB和alpha通道合起来,就得到了我们需要的半透明图片了。

未处理前PNG大小:8.36KB

1.png

处理后JPG大小:4.22KB

1\_png.jpg

可以看到图片存储所需空间缩小了一倍,图片越大,压缩效果越明显。

下载地址:png2jpg.zip