月度归档:2017年08月

yii2 实现tree grid

yii2-gtreetable

Extension of Yii 2 Framework, which is wrapper for bootstrap-gtreetable plugin, on the other hand it provides functionality which allows to save the nodes states into database. http://gtreetable2.gilek.net

yii2-nested-sets

The nested sets behavior for the Yii framework.

yii2-treegrid

jQuery TreeGrid Extension for Yii 2

This is the jQuery TreeGrid extension for Yii 2. It encapsulates TreeGrid component in terms of Yii widgets, and thus makes using TreeGrid component in Yii applications extremely easy.

tree-manager

An enhanced tree management module from Krajee with inbuilt jQuery plugins and Yii widgets for tree node manipulation and management using nested sets. The module provides ability to manage hierarchical data stored using nested sets. It utilizes the yii2-nested-sets extension to manage the tree structure in your database. Refer the documentation for yii2-nested-sets extension before you start using this module. The yii2-tree-manager module includes two major widgets TreeView and TreeViewInput. In addition, it includes module level settings to easily configure your tree management preferences. It includes a Tree Model which includes inbuilt tree management flags and rules. The model implements and uses a TreeTrait. So one can choose to extend from the Tree Model or implement their own model that uses the TreeTrait. It also includes a NodeController that allows you to manage tree nodes easily via ajax. The tree view widgets and jQuery plugins are built from scratch by Krajee entirely without using any third party plugins. The TreeView is designed using HTML5, jQuery & CSS3 features to work along with the Yii 2 framework.

View a complete demo for TreeView or TreeViewInput.

设置virtualbox linux客户端共享文件夹权限

在virtualbox中设置共享目录以及共享名

打开virtualbox“设置”菜单》“共享文件家”,设置共享目录以及共享名

设置linux客户端mount用户

通过id查看用户和用户组的id,然后通过mount的-o选项设置客户端用户以及用户组

sudo mount -t vboxsf -o uid=1000,gid=1000 share /share

C#编写的可供PHP调用的com dll(Visual studio 2017)

新增类库项目

依次选择“文件”》“新建”》“项目”,然后选择“类库(.net framework)”

添加引用

在“解决方案资源管理器”的“引用”点击鼠标右键,才程序集中搜索“InteropServices”,勾选“System.Runtime.InteropServices”

com可见

在“解决方案资源管理器”的项目名称上点击鼠标右键,选择“属性”,然后在“应用程序”面板选择“程序集信息”,勾选“使程序集COM可见”

签名

在“解决方案资源管理器”的项目名称上点击鼠标右键,选择“属性”,然后在“签名”面板勾选“为程序集签名”,然后在下拉菜单选择“新建”,输入“签名文件名称”,取消“使用密码保护密钥文件”勾选,点击确认

创建程序

using System.Runtime.InteropServices;

namespace HelloWorld
{ 
    [ComVisible(true)]
    public class Say
    {
        public string Hello()
        {
            return "Hello World";
        }
    }
}

发布dll

点击主菜单“生成”》“生成解决方案”(或者按F6)

注册com

按键盘上的win键,打开开始菜单,输入”vs”搜索,鼠标右键点击”VS 2017开发人员命令提示符”,选择用管理员身份打开;

进入生成的dll目录(通常在项目的bin/release目录下)

cd d:/helloworld/bin/release
regasm HelloWord.dll
gacutil /i HelloWord.dll

PHP调用com

<?php  
$r=new Com("HelloWorld.Say");  
$s=$r->Hello();  
echo $s;

调用出现Uncaught com_exception: Failed to create COM object

http://www.drupalonwindows.com/en/blog/calling-net-framework-and-net-assemblies-php

backgroundWorker in c# console application

A sample console program with backgroundworkwr.

class Program
{
    private static BackgroundWorker worker = new BackgroundWorker();
    private event EventHandler BackgroundWorkFinished;

    static void Main(string[] args)
    {
        worker.DoWork += worker_DoWork;
        worker.RunWorkerCompleted += worker_RunWorkerCompleted;
        worker.ProgressChanged += worker_ProgressChanged;
        worker.WorkerReportsProgress = true;
        worker.WorkerSupportsCancellation = true;

        Console.WriteLine("Starting Application...");

        worker.RunWorkerAsync();
        Console.ReadKey();
    }

    static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        Console.WriteLine(e.ProgressPercentage.ToString());
    }

    static void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        Console.WriteLine("Starting to do some work now...");
        int i;
        for (i = 1; i < 10; i++)
        {
            Thread.Sleep(1000);
            worker.ReportProgress(Convert.ToInt32((100.0 * i) / 10));
        }

        e.Result = i;
    }

    static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Console.WriteLine("Value Of i = " + e.Result.ToString());
        Console.WriteLine("Done now...");
    }
}

office在线预览隐藏发布窗口

C# Excel Interop – Suppress ‘Publishing’ dialog when invoking Worksheet.ExportAsFixedFormat

方法一:采用BackgroundWorker

var worker = new BackgroundWorker();
worker.DoWork += (o, args) =>
{
    var path = @"D:\sample.xlsx";
    var application = new Microsoft.Office.Interop.Excel.Application();
    application.Workbooks.Open(path,
        Type.Missing, true);
    application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path);
};
worker.RunWorkerAsync();

方法二:采用pedamorf

A PDF conversion server for Windows that supports documents, text, images, html and urls.

office文档在线预览方案比较(免费、付费、效果和价格)

免费方案

目前技术上主要存在两种方案:1,通过openoffice转pdf,2,通过ms提供的接口进行转换。

相关文章:

付费方案

百度API(介绍 效果展示)

支持平台 无要求

支持源格式 doc、docx、ppt、pptx、xls、xlsx、vsd、pot、pps、rtf、wps、et、dps、pdf、txt、epub

元信息提取 是

缩略图生成 是

多端支持 是

内置防复制 否

内置防分享 否

内置CDN加速 百度云

开发成本(转码以及多端在线预览) 一周内

价格成本 调用成功:0~1500次 0.15元/次,3001~30000次 0.1元每次,30001次以上 0.08元一次;外网下行流量 0.5元/GB

成功案例 百度文库

永中 (介绍 效果展示

支持平台 windows,linux

支持源格式 不支持wps

元信息提取 不支持

缩略图生成 否

多端支持 是

内置防复制 是

内置防分享 否

内置CDN加速 否

开发成本(转码以及多端在线预览) 2周左右

价格成本 联系后初次报价:5000一年 50000次; 普及版(只支持office)终生授权49800元 完整版终生授权79800元

成功案例 QQ邮箱、网易126/163邮箱、移动139邮箱、189邮箱

officeweb365 (介绍 效果展示)

支持平台 无要求,部署版需要Windows Server

支持源格式 Word、Excel、PowerPoint、PDF、WPS

元信息提取 是

缩略图生成 是

多端支持 是

内置防复制 是

内置防分享 是

内置CDN加速 否

开发成本(转码以及多端在线预览) 一周内

价格成本 1, 最大5M免费500次每天有广告 2, 最大20M10000次每天无广告可防复制分享 1800 元/年 3,无限制,2800 元/年、300元/月 4,部署版 日预览次数十万次以内的,一次性六千。不限制日预览次数的,一次性八千 免费升级5年 重大升级,终身免费,比如office2018新版本出来了,免费更新

成功案例 联通邮箱,腾讯游戏开发者平台

idocv

因为测试结果明显不达标准,放弃

使用国内镜像快速安装composer以及yii2(附安装脚本)

通过中国镜像安装composer

参考文章 如何安装 Composer

下载安装文件

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

安装

php composer-setup.php

删除安装文件

php -r "unlink('composer-setup.php');"

设置全局路径(windows请按参考文档设置)

sudo mv composer.phar /usr/local/bin/composer

配置使用国内镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com

安装Yii2

参考文章 Install via Composer

首先安装 Composer Asset Plugin

composer global require "fxp/composer-asset-plugin:^1.2.0"

安装基础模板

php composer.phar create-project yiisoft/yii2-app-basic yiitest

安装高级模板

php composer.phar create-project yiisoft/yii2-app-advanced yiitest

安装过程中如果提示“please create a GitHub OAuth token to go over the API rate limit”,登录github,在https://github.com/settings/tokens生成一个token,权限只需要勾选repo即可

进入项目目录

cd yiitest

测试安装环境

php requirements.php

初始化项目

 ./init

运行项目

./yii serve/index -h
./yii serve/index -t="@frontend/web"
./yii serve/index -t="@backend/web"