1.https://nodejs.org/en/download/ 下载nodejs 安装
2.npm安装express插件。
npm install express
3.安装express命令工具 npm install -g express-generator
3.express 安装nodejs项目。
express -e ejs MyApp
4.进入项目目录,安装nodejs依赖模块.
cd MyApp && npm install
5.安装代码修改自动重启
npm install -g nodemon
6.启动项目 cd MyApp 然后调用 nodemon server.js
作者归档:zhouxiang
ionic2实现cordova打印
基于KT50机器,E488打印机器实现,基于语言angular2和cordova,使用regoPrinter.jar完成。
插件下载: cordova-plugin-KTPrint
安装至目录
然后单独封装js部分,我目前是修改ionic-native插件(懒):
ionic-native\dist\es5\plugins --增加文件 KTPrint.d.zip 解压缩 ionic-native\dist\es5 --替换文件 index.d.zip 解压缩 ionic-native\dist\esm\plugins --增加文件 KTPrint.js.zip ionic-native\dist\esm --替换文件 index.d2.zip 解压缩
替换完成后,在项目调用KTPrint 调用打印即可 :
import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { KTPrint } from 'ionic-native'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor(public navCtrl: NavController) { } //打印测试 PrintTest() { try { KTPrint.Print("测试周祥"); } catch (e) { alert(e); } } }
到此,基本完成,不明白加Q咨询,效果如下:
以上方法需对应机型,如果增加删除其他方法,参考打印机文档修改即可!
打印机文档(E488):2017_4_10_17_44_13_147_1007
C#操作EXCEL以及生成公司公章
最近项目需求 做了个小工具 操作EXCEL以及生成公司公章
TestOnSeal _top = new TestOnSeal(); _top.TextFont = new System.Drawing.Font("黑体", 16, FontStyle.Bold); _top.FillColor = Color.Red; //_top.ColorTOP = Color.Black; _top.Text = comname; _top.BaseString = ""; _top.ShowPath = true; _top.LetterSpace = 1; _top.SealSize = 180; _top.CharDirection = Char_Direction.Center; _top.SetIndent(20); Graphics g = this.CreateGraphics(); g.DrawImage(_top.TextOnPathBitmap(), 0, 0); _top.CharDirection = Char_Direction.ClockWise; g.DrawImage(_top.TextOnPathBitmap(), 180, 0); _top.CharDirection = Char_Direction.AntiClockWise; g.DrawImage(_top.TextOnPathBitmap(), 0, 180); _top.SetIndent(20); _top.CharDirection = Char_Direction.Center; g.DrawImage(_top.TextOnPathBitmap(), 180, 180); _top.TextOnPathBitmap().Save(System.Windows.Forms.Application.StartupPath + "/tp/" + comname + ".png", System.Drawing.Imaging.ImageFormat.Png); g.Dispose();
微信公众号开发 – 获取所有关注的用户openid
需要的类 用于反序列化
public class GuanZhuModel2 { public int total { get; set; } public int count { get; set; } public OpenIdListData data { get; set; } public string next_openid { get; set; } } public class OpenIdListData { ////// OPENID的列表 /// public Listopenid { get; set; } }
具体方法:
string returnStr = HttpUtil.Send("", "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Convert.ToString(PayCenter.getCache("wxModelAccess")) + "&next_openid="); var obj = JsonConvert.DeserializeObject(returnStr); for (int i = 0; i < obj.data.openid.Count; i++) { var openid = Convert.ToString(obj.data.openid[i]); UserOpen openmodel = new UserOpenDAL().GetOpenIDOrType(openid, 1); new WXAPICommon(null, null, null).ReturnTxt(openid, "尊敬的用户,由于惠号网帐户体系升级,您的帐户类型已变更!"); if (openmodel == null) { WeiXinCommon.GuanZhuList.Add(new GuanZhuModel() { fromUserName = openid, EventKey = "" }); } }
C#常用错误全局捕获并记录方法
我从来都不废话 能用代码解决的 绝不说废话 (<_>)
void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 //在出现未处理的错误时运行的代码 周祥 Exception ex = Server.GetLastError().GetBaseException(); StringBuilder str = new StringBuilder(); str.Append("\r\n" + DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss")); str.Append("\r\n.客户信息:"); string ip = ""; if (Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR") != null) { ip = Request.ServerVariables.Get("HTTP_X_FORWARDED_FOR").ToString().Trim(); } else { ip = Request.ServerVariables.Get("Remote_Addr").ToString().Trim(); } str.Append("\r\n\tIP:" + ip); str.Append("\r\n\t浏览器:" + Request.Browser.Browser.ToString()); str.Append("\r\n\t浏览器版本:" + Request.Browser.MajorVersion.ToString()); str.Append("\r\n\t操作系统:" + Request.Browser.Platform.ToString()); str.Append("\r\n\t访问路径:" + Request.Url.ToString()); str.Append("\r\n\t请求参数:" + Server.UrlDecode(Request.Form.ToString())); str.Append("\r\n.错误信息:" + ex.ToString()); Log.ErrorLog(str); }
log.cs 文件下载 错误会存储在根目录 app_data 里面
Log
微信公众号开发 – 获取授权
下面是获取公众号的授权,注意的是 公众号授权与网页授权不一样的 获取到后 缓存起来 保存2小时
string url2 = string.Format( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", WeiXinPay.WxConfig.appid, WeiXinPay.WxConfig.appsecret); string returnStr2 = HttpGet.PageGet(url2, null, "text/HTML"); var obj2 = JsonConvert.DeserializeObject(returnStr2); if (obj2 != null && obj2.access_token != "") { if (PayCenter.getCache("wxModelAccess") != null) { PayCenter.removeCache("wxModelAccess"); } PayCenter.addCache("wxModelAccess", obj2.access_token, 2); }
C# GDI 画文字
其实这种东西 早就会了 只是没东西发了 先拿来滥竽充数
System.Drawing.Image img = System.Drawing.Image.FromFile(Application.StartupPath + @"\1.png"); Graphics g = Graphics.FromImage(img); FileInfo file = new FileInfo(Application.StartupPath + @"\1.jpg"); Image img2 = Image.FromFile(file.FullName); g.DrawImage(img2, 1910, 480); g.Dispose();
C# GDI画图 两张图片合并
好久没发文章了,整点东西上来,废话就不多说了,代码如下:
Bitmap bmp1 = new Bitmap(Application.StartupPath + "\\1.png"); Bitmap bmp2 = new Bitmap(Application.StartupPath + "\\1.jpg"); using (Graphics g = Graphics.FromImage(bmp1)) { Size size = new Size(265, 265); Rectangle rect = new Rectangle(new Point(bmp1.Width - size.Width - 118, 96), size); g.DrawImage(bmp2, rect, new Rectangle(0, 0, bmp2.Width, bmp2.Height), GraphicsUnit.Pixel); bmp1.Save(Application.StartupPath + "\\C.jpg"); }
JSON序列化和反序列化常用的dll插件
Newtonsoft.Json是一款还不错的反序列化和序列化的插件,可以正确,精准的序列化和反序列化对象 留着以备后用,下载地址:Newtonsoft.Json
Memcached服务器的部署及使用(C#)
最近项目用到缓存,同事找了一个比较不错的缓存分布式服务器,部署:
1、解压Memcached_1.2.5.zip ,它是memcached的服务器端。
2、把Memcached_1.2.5复制到你指定的做为缓存服务器的电脑上,比如叫做192.168.0.1。 继续阅读