1. 安装tigervnc服务端
sudo apt install tightvncserver
  1. 安装gnome
sudo apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
  1. 启动vncserver
vncserver

首次运行需要设置密码,设置完成后会有以下类似提示
“`
New ‘X’ desktop is server_name:1

Starting applications specified in /root/.vnc/xstartup… 阅读更多

今天使用腾讯云的免费DV SSL证书在阿里云CDN上部署,电脑上访问一切正常,但在手机使用UC浏览器提示证书已过期或不被信任,微信中访问直接空白。后来通过禁用CDN,直接回源又正常。初步确定为CDN上的证书配置问题。
在CDN上部署的是下回来的证书包里Apache文件夹下的证书,其中有两个公钥文件,一个私钥。尝试只使用以自己域名命名的那个公钥,无效。两个公钥合并一个文件,根公钥在前,自身站点的在后,同样无效。

解决方法
– 自身站点的公钥在前,根公钥在后,合并成一个文件来提交
– 使用Nginx文件夹下的证书… 阅读更多

博客此前一直在用Cloudflare提供的HTTPS功能,但是挂了Cloudflare后Ping一直都在150ms+,而且还经常受干扰不稳定,而Github Pages用了CDN,延迟只有70ms多,困扰了许久。

Github在前些时间添加了自定义域名的HTTPS功能,奈何无论是关掉了Cloudflare的CDN、Custom domain直接输入https://tlingc.com,Enforce HTTPS单选框一直是灰色的,提示Unavailable for your site because your domain is not properly configured to support HTTPS

由于裸域名设置CNAME会和MX记录冲突,我是A记录指向Github Pages Server:

A tlingc.com points 
阅读更多

本文介绍方法搜索效率太低,之前没有想到有更好的方法。现在我用的是直接搜索,然后把匹配结果放进新数组

今天给小程序添加个搜索功能,需要实现前端一个list列表的搜索。

搜索有search()和indexOf()两个方法,搜了一下两者的区别,发现indexOf在搜索字符串的情况下效率更高,于是选择了indexOf

另外存储变量也有两种方案:

  1. 直接给details[id]加多一个HIDDEN变量,details[ID].HIDDEN
  2. 新增一个hidden变量,hidden[id]

试了一下,直接在wx:if中使用item.HIDDEN比hidden[index]速度更加快。


刚开始打算使用Change函数,直接input输入实时进行搜索。

handleZanFieldChange(e) {
    for(var i = 0; i < this.data.details.length; i++)
    {
      var data = this.data.details[i];
      if (data.NAME.indexOf(e.detail.value) == -1)
      {
        
阅读更多

这几天把GSNET网站的Bootstrap框架升到了v4,这里记录一下升级的一些变动:
1. navbar需要重写
2. panel被card取代,以下css有变更:

panel-card
panel-heading-card-header
panel-body-card-body
3. panel默认没有margin了,需要自己用class mt-* / mb-解决
4. pagination组件变更,也要重写
5. tab组件变更,要重写。另外还需要引个popper.js:
https://unpkg.com/popper.js/dist/umd/popper.min.js
6. 不同于以前的panel,给card设置danger success等样式,整个card都会变色,如果要用以前panel仅header变色,需要给card-header设置bg-

7. alert要在最后一个子标签加个mb-0,否则上下margin不同
8. form-group的label现在在form-control的上面了,需要重写class
9.

阅读更多

最近在使用framework7框架开发web app,发现在tab页面中直接定义多个ptr-content会导致异常。最后绑定用户点击tab的事件,动态解绑/绑定ptr后解决。

在HTML中这样定义ptr,只需在tab-1(首屏)中设置ptr-content即可,用户切换tab时再去把ptr-content class赋值到对应的tab中。

<div class="tabs">
  <div id="tab-1" class="page-content tab tab-active ptr-content">
    <div class="ptr-preloader">
        <div class="preloader"></div>
        <div class="ptr-arrow"></div>
    </div>
    ......
  </div>
  <div id="tab-2" class="page-content tab">
    <div class="ptr-preloader">
        <div class="preloader"></div>
        <div 
阅读更多

目前在做成文档,更方便阅读。原来整理的API可见:https://github.com/TLingC/QZAPI_Archive

心血来潮,突然想到强智官方有提供智校园APP,于是用Fidder抓了下包得到JSON API,可获取帐号信息、课表、空教室等数据。获取教务系统信息无需抓取页面分析辣(•̀ᴗ•́)و ̑̑

理论上可以使用智校园APP的学校都能够使用,可见https://github.com/TLingC/GDUF-QZAPI/blob/master/SUPPORTED.md

已经把API整理出来,部分API由于条件所限没有详细说明。

<?php
    $mysql = mysql_connect(MYSQL_HOST,MYSQL_USERNAME,MYSQL_PASSWORD);
    if (!$mysql) echo "Failed to connect mysql!";
    mysql_select_db(MYSQL_DBNAME,$mysql);
    $result = mysql_query("SHOW TABLE STATUS");
    while($row = mysql_fetch_row($result))
    {
         mysql_query("ALTER TABLE " . $row[0] . " CONVERT TO 
阅读更多

最近使用到Jenkins来进行持续集成,代码库在自建的Gitlab上,而Jenkins里已有提供GitLab Plugin插件,很方便地就完成了部署。但是若使用其它的例如阿里云Code和腾讯云TGit系统却没有对应的插件,网上也没有好的解决方案。尝试使用过Generic Webhook Trigger Plugin,但是多个项目都使用的话,会把所有项目都触发构建。

因为我的需求比较简单,只需响应Push请求然后拉取代码发布到FTP上,后来决定直接使用“触发远程构建(例如,使用脚本)”这个系统自带触发器,步骤如下:

  1. 由于我的Jenkins系统设定了必须登录,触发时需要身份验证,于是新建一个Jenkins用户用于Webhook,赋予Overall Read、Job Create&Discover&Read权限(也可使用管理员帐号,但是为了系统安全,还是建了一个低权限的帐号用于Webhook)
  2. 在项目配置的构建触发器中勾选“触发远程构建 (例如,使用脚本)”,由于使用Webhook时直接登录帐号,身份验证令牌可不填。记录下Use the following URL to trigger build remotely:后的URL即可。?token=TOKEN_NAME可省略
  3. 登录Git平台,在Webhook配置中填写上一步的URL并带上登录验证信息,勾选勾选Push events,最终URL类似于如下:
    http://USERNAME:PASSWORD
阅读更多

今天用PHP集成支付宝电脑支付,使用demo进行测试时一直提示missing-signature,后来一番折腾后解决了,这里记录一下需要注意的几点。

config.php中的参数均是在蚂蚁金服开放平台密钥管理的开放平台密钥中获取。

需要下载密钥生成器先生成密钥,生成后复制公钥,在上述的密钥管理网站“RSA(SHA256)密钥(推荐)”下设置公钥。同时目录下会有rsa_private_key.pem、rsa_public_key.pem、rsa_private_key_pkcs8.pem。只需使用前两个。
1. app_id直接复制页面中的APPID
2. merchant_private_key与rsa_public_key分别填入rsa_private_key.pem、入rsa_public_key.pem中的内容,注意需要去掉前后的BEGIN及END注释,并且避免换行(尝试去掉后就没有了missing-signature报错)阅读更多

大概一年前和朋友弄了GS-M.ORG,一个游戏服务器状态查询网站,后来由于嫌维护麻烦就没继续做下去了,刚好朋友提起,想到备份后就一直没动过,放着也没用,今天就把它开源了。

网站前端使用Bootstrap框架+Bootswatch主题,内置了以前汇诚开源过的HCount、HSign等,多语言系统。支持服务器名称、人数等信息的查询,生成服务器banner、在线人数图片等。服务器信息获取方面主要使用GameQ库,支持上百款游戏服务器。整合了PHPBB论坛,添加服务器必须登录后才可添加(作整理的时候注释了这段,选择性开启)。另外获取服务器数据的查询服务器和网站服务器是分离的。

问题
1. 服务器信息必须就近获取,例如国内的查询服务器就经常无法获取到国外服务器的信息,不知道是不是延迟导致的。当时的解决方案是部署两台国内、一台拉斯维加斯、一台卢森堡的服务器,后两者分别负责美洲和欧洲的服务器查询。
2. 后端查询服务器采用的方式并不完善,是根据服务器最后的更新时间进行轮询。每次更新获取15个上一次更新的时候可以连接的服务器,再获取5个上一次更新无法连接的服务器。某些情况下会影响更新速度,或者出现timeout。

下面是Github地址
网站(不含论坛):https://github.com/GS-M-ORG/GS-M.ORG-Website
查询服务器:https://github.com/GS-M-ORG/GS-M.ORG-QueryServer阅读更多

最近写微信小程序,需要使用到动态表单,输入框都要从服务器上加载。这里分享一下解决方案。

let app = getApp()
let ajax = require('../../network/ajax')
Page({
  data: {
    Custom: {},
    lists: []
  },
  onLoad: function () {
    if (app.globalData.CUSTOM) //预先获取了自定义表单信息,有ID, Required两个参数
    {
      var array = new 
阅读更多

最近用到了腾讯云的无服务器云函数做一个定时通知功能,记录一下。
SCF有免费额度,综合了调用次数、资源使用量、代码运行时长。
由于我的PHP文件每次执行时间较长,为了用这个免费额度→_→,这里设置了3秒超时,后端PHP用ignore_user_abort函数,使得发送请求后可不等待回应,切断请求后仍在后台运行。

# -*- coding: utf8 -*-
import urllib.request
def main_handler(event, context):
    try:
        urllib.request.urlopen("127.0.0.1/yourfile.php",None,3)
    except Exception as e:
        print(e)
阅读更多

这个程序原本是做来给自己用的,免去了查成绩的手抖又心跳加速打信息打错等各种问题,页面改动后直接发送邮件到自己的邮箱里,不看也不行→_→哈哈哈
Simple HTML DOM:http://simplehtmldom.sourceforge.net/
我这里用的查询地址是广州招考的,查询没有验证码,没有了验证码识别的问题。

先模拟一次提交,找到提交数据。

用Curl模拟提交

$cookie_file = tempnam("tmp","cookie");
function postData($url, $data)
{
  global $cookie_file;
  $ch = curl_init();
  $timeout = 300;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, 
阅读更多


曾经参与过的一个项目
现在和团队决定把脚本开源了
JC2MP使用LUA作为开发语言
希望对有想学习用LUA作脚本开发语言的联机模组的朋友有帮助

2013-2017
运营中有很长一段时间为唯一国服
创下最高同时在线人数41人
感谢一路同行

Github地址:https://github.com/TLingC/JC2MP_HCFreeroam阅读更多