激发云力量--打造我的云端工具集

2023-11-15

0.前言

日常工作中,有很多小需求,作为码农,总喜欢自己动手做点小东西出来,也成为学习与实践的好机会。
在使用腾讯云过程中,从环境搭建、各个小需求的构思,前后端技术的琢磨、学习、使用,收获很大。
现在整理出来和大家分享。

先说说做了哪些事情(都来源于实际小需求):

其他用途

1.环境搭建(php)

使用了腾讯云¥65/月 的 ubuntu 14 x64,经济实惠,适合投入有限的程序猿猿。

腾讯云

我的云端工具集都是基于后端php、前端h5实现。php可以和apache或nginx配套使用。

配置好的同学可以跳过
网络上资料很多,也可以根据自己的系统、喜欢的方式来配置、搭建环境
例如CentOS参考这里:http://blog.sina.com.cn/s/blog_505bf9af010137gf.html

apache2+php+mysql安装非常简单:

sudo apt-get update
sudo apt-get install apache2 php5
service apache2 start

然而更喜欢 nginx + php 的组合:

# 安装最新的nginx,模块、功能全。参考:http://nginx.org/en/linux_packages.html#stable
#  加入nginx官方key
wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
#  加入nginx官方源
codename=$(lsb_release -a|grep Codename|awk '{print $2}')
echo deb http://nginx.org/packages/ubuntu/ $codename nginx > nginx.list
echo deb-src http://nginx.org/packages/ubuntu/ $codename nginx >> nginx.list
sudo cp nginx.list /etc/apt/sources.list.d/nginx.list
#  开始安装,默认已经开启,没开就service nginx start开启下
sudo apt-get update
sudo apt-get install nginx
#  看看安装好了没,默认80已经开啦
netstat -tln
#  如果无法访问,可以看看安全组有没有加上80: https://console.qcloud.com/cvm/securitygroup


# 安装php和常用库。也是默认就已经开启啦,没有就运行service php5-fpm开启
sudo apt-get install php5-common php5-fpm php5-cli php5-curl php5-gd php5-sqlite php5-mcrypt

# nginx使用用户“nginx”运行,php5-fpm使用“www-data”运行
# nginx无权限访问php5-fpm的sock来通信的
# 所以加个组,就有权限啦
sudo usermod -a -G www-data -G nginx  nginx

修改sudo vim /etc/nginx/conf.d/default.conf (假定代码放到/home/ubuntu/www目录)

server {
    listen       80;
    server_name  localhost;
    root /home/ubuntu/www;
    index   index.php index.html index.htm;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root /home/ubuntu/www;
    }
    location ~ \.php$ {
         try_files      $uri = 404;
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
         fastcgi_pass   unix:/var/run/php5-fpm.sock;
         fastcgi_index  index.php;
         include        fastcgi_params;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

可选:允许 <?php 简化为 <?

sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php5/fpm/php.ini

重新启动nginx、php5-fpm

sudo service php5-fpm restart
sudo service nginx restart

写个demo页面访问http://server ip/看看

echo "<? phpinfo(); ?>" > /home/ubuntu/www/index.php

2.问卷系统

背景

Google Docs的表单功能很棒,支持很多种类型:文本框、单选、多选、下拉框、网格,分页等,然而在墙内不可用。
腾讯问卷出来前,试过很多其他问卷系统,搭建复杂;第三方的问卷系统也不是那么好用,于是早先自己写了套,也是一个学习的过程。
(老早写的代码,风格、组织不太好,就不开源了^_^,有需要的可以拿去看看)

在很长一段时间里,大家中午一起订外卖。一直用这个东西来收集大家菜单,轮流担任外卖PM,负责下单、拿外卖。

前端:从Google表单分离了前端js代码,略作调整
后台:php来收集表单元素的json,存储;组装问卷页面;问卷回答的存储和下载

实现思路

  • step1:前端使用js,添加各类表单元素元素,记录对应数据。其中EntryType表示是文本、单选、网格等类型,Choices字段记录对应选项。
    {
      "EntryId": 3,
      "Composite": false,
      "QuestionTitle": "无标题的问题",
      "HelpText": "",
      "EntryType": 4,
      "Choices": [
        {
          "SelectedByDefault": false,
          "Value": "选项 1",
          "Label": "",
          "GoToPage": -2
        },
        {
          "SelectedByDefault": false,
          "Value": "选项 2",
          "Label": "",
          "GoToPage": -2
        }
      ],
      "OtherOptionEnabled": false,
      "Required": false,
      "GoToPageEnabled": false,
      "Position": 3
    }
  • step2:点“保存”按钮,以json格式,post整个表单数据,后台php存储下来,使用随机id标识。(目前以文件方式,没有使用db)。
  • step3:打开问卷时,使用id读取到对应问卷的json配置,根据EntryType生成html代码,返回给前端
  • step4:问卷回答后,以k=v&x=y提交,后台按题目顺序,将答案整理为csv,存储到文件
  • step5:为问卷生成了特殊的链接,可以查看、下载数据,把csv发给前端即可。

看看效果

创建表单

创建表单

填写表单

填写表单

可以改进的地方

当时是一只菜鸟,很多代码偏于实现,现在看来

  • 代码结构很乱,可以优化。
  • 表单元素的渲染采用了纯html的拼接,如果在后端使用tinybutstrong/前端使用art-template或angular.js/react/vue.js这类MVVM框架,可以更优雅的完成。

3.二维码工具

背景

经常有需要生成二维码,但:

  • 第三方二维码生成页面都会有很多其他元素,不喜欢
  • 不能保证第三方会不会收集、存储你输入的文本信息,例如网址、电话号码、wifi密码
  • 就想做一个自己玩

生成二维码

html5中,调用这个js即可

http://jeromeetienne.github.io/jquery-qrcode/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jeromeetienne.github.io/jquery-qrcode/src/jquery.qrcode.js"></script>
<div id="qrcode"></div>
$('#qrcode').qrcode({
  width: 64,
  height: 64,
  text: 'hello, world'
});

但是jquery-qrcode生成的二维码在table或canvas中,无法右击保存
所以改造下,渲染成能右击-另存为的< img >标签

<img id="qr_img"/>
function make_qrcode(text, width) {
  width = width || 256;
  var div = $('<div></div>');//生成到这个虚拟的dom
  div.qrcode({
    width: width,
    height: width,
    text: text
  });
  // 获取实际DataUrl,给真实的img元素
  // 这个img就可以右击-另存为啦
  var url = div.find('canvas')[0].toDataURL();
  $('#qr_img').attr('src', url);
}

make_qrcode(256, 'hello, world')

突然来的一个需求

不是产品经理提的,自己挖掘的
玩手机游戏,家族里,大家想加个微信群:

  • 族长告诉大家自己的微信号,然后大家加
  • 族长把群二维码发给加她的人

好麻烦,如果能聊天中发二维码多简单。。。

  • 微信群中,群二维码,保存到手机
  • 上传这个二维码,假如结果为xxx
  • 生成一个短网址t.cn/abcd,发到游戏聊天会话中
  • 家族的小伙伴们 复制或手动打开,跳到一个页面,这个页面出现一个二维码,用微信扫描后加群

以后,族长只要上传群二维码,然后生成短网址,把网址发给大家,小伙伴们就可以愉快的加群啦

实现

二维码解析用这个js库

// 从input[type=file]或drop获得的file中解析二维码
var reader = new FileReader();
reader.onload = function(e) {
  qrcode.decode(e.target.result);
};
reader.readAsDataURL(file);

// navigator.getUserMedia开启摄像头扫描二维码
// 代码60多行,可以直接看http://t.ydjiao.com/qr/index.js,核心部分start_scan
// 定时采集video到canvas,然后调用qrcode.decode尝试解析canvas

以上二维码生成、解析都是纯js、前端完成
短网址只能依赖后台做转换了,写个php调用api.t.sina.com.cn的api就好

效果

二维码生成、解析、扫描

4.地图搜索

背景

  • 知道公司班车几条线路所有停靠站点,先看看家附近哪里可以乘坐
  • 最好能在地图直观看到 家、所有站点位置

思路

  • 调用百度地图api,把所有地址转换成经纬度,在地图上标记出来

实现

这个比较简单,做下用户输入的查询的解析,发请求给百度地图api
但是确实做了些交互体验的东西,输入立刻查询、已查询地点缓存等

var city = '深圳';
var geocoder = new BMap.Geocoder();
var geolocation = new BMap.Geolocation();
var map = new BMap.Map('container');

geocoder.getPoint(city, function(point) {
  console.info('point:', point);
  map.centerAndZoom(point, 11);
  map.addControl(new BMap.MapTypeControl());
  map.addControl(new BMap.NavigationControl());
  map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT}));
  ...
  // 更多代码可以直接打开http://t.ydjiao.com/map,右击,查看网页源代码
});

按中心搜索周边多个位置

5.XCode dmg / docset下载地址获取

背景

  • 从Mac上的App Store下载XCode太慢,而且无法和同事分享安装包
  • 相关文档docset只能从XCode里面下载,太慢,也不方便分享
  • 第三方下载安全风险大 XCodeGhost安全事件

思路

  • 抓取XCode更新过程中,从Apple获取的下载地址,用工具下载

实现

跑起XCode,抓包看看,发现访问了https://developer.apple.com/library/downloads/docset-index.dvtdownloadableindex
打开看看,大礼包都在

这个文件是apple加的CFProperty,找了个php版本的解析工具CFPropertyList

$url = 'https://developer.apple.com/library/downloads/docset-index.dvtdownloadableindex';
$xml = file_get_contents($url);
$plist = new CFPropertyList\CFPropertyList();
$plist->parse($xml);
$docs = $plist->toArray();
// 然后按友好的格式输出就行啦

效果

XCode下载地址获取

本文首发腾云阁 激发云力量–打造我的云端工具集

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

激发云力量--打造我的云端工具集 的相关文章

  • 图解浏览器缓存,教你提高用户体验

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由前端林子发表于云 社区专栏 浏览器缓存 是浏览器端保存数据 用于快速读取或避免重复资源请求的优化机制 有效的缓存使用可以避免重复的网络请求和加快页面速度 从而提高用户体验 一
  • 巧用机器学习定位云服务器故障

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由roganhuang 发表于云 社区专栏 导语 随着腾讯云业务的扩大 母机数量越来越多 为减少人力并实现母机故障的自动化定位 本文尝试利用机器学习算法 通过对历史故障母机的日志
  • 宝塔在线登录不成功的解决办法

    像上述的错误一样 宝塔外网地址打不开的情况 解决方法如下 首先登录腾讯云 找到宝塔 然后点击登录输入命令 su root 切换用户 密码如果忘记的话点击重置密码 然后在执行上述指令 输入密码就可以 进入宝塔了 输入bt命令 获得你的宝塔列表
  • Firefox火狐浏览器显示你的连接不安全,是什么意思?

    当 Firefox 连接到一个安全的网站时 网址最开始为 https 它必须确认该网站出具的证书有效且使用足够高的加密强度 以充分保护您的隐私 如果证书无法通过验证 或加密强度过低 Firefox 会中止连接到这个网站 并向您显示SSL证书
  • TokuDB性能测试报告

    作者介绍 吴双桥 腾讯云数据库工程师 本文首发腾云阁 TokuDB性能测试报告 一 背景介绍 近年来 TokuDB作为MySQL的大数据 Big Data 存储引擎受到人们的普遍关注 其架构的核心基于一种新的叫做分形树 Fractal Tr
  • 腾讯云服务器标准型S5、S4、S3、S2区别及怎么选择?

    腾讯云标准型服务器包括S2 S3 S4实例 这些实例都是标准型服务器 那么S2 S3 S4 S5区别在哪里呢 在这一块选择的时候新手会有很多犹豫 看上去型号都差不多 配置里面很多参数也看不懂 到底怎么选呢 接下来带大家去看看详细情况 腾讯云
  • 「云+未来」上海峰会,报名开启

    欢迎大家前往腾讯云技术社区 获取更多腾讯海量技术实践干货哦 开放技术能力 探索产业变革 分享腾讯云助力各行业的转型经验 腾讯 云 未来 上海峰会将于9月21日在上海中星铂尔曼大酒店盛大举行 本次峰会以 连接 智能 未来 为主题 邀请政企精英
  • AI小白快上车!这是发往高薪职位的车!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云AI中心 发表于云 社区专栏 AI到底有多火 看看下面这组数据 腾讯研究院 2017全球人工智能人才白皮书 报告中提到 现全球AI领域人才约30万 而市场对人才的需求在百
  • 腾讯云技术分享:MySQL AHI 实现解析

    MySQL 定位用户记录的过程可以描述为 打开索引 gt 根据索引键值逐层查找 B 树 branch 结点 gt 定位到叶子结点 将 cursor 定位到满足条件的 rec 上 如果树高为 N 则需要读取索引树上的 N 个结点并进行比较 如
  • 链圈的朋友们值得收藏!腾讯首席架构师教你两种区块链设计思路

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由敖萌发表于云 社区专栏 区块链发展到了现在 产生了很多不同形式的区块链技术 随着技术的发展 目前比较公认的看法是区块链已经走进了2 0时代 区块链1 0是以比特币为代表的去中心
  • 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

    很多朋友都认为微信小程序申请 部署 发布很难 需要很长时间 实际上 微信和腾讯云同是腾讯产品 已经提供了10分钟 根据准备资源情况 已完成小程序申请认证 完成小程序开发 部署 发布的方式 当然 实现的是基础功能 但是 可以给学习者很便捷的体
  • 图床搭建快速入门(PICGO + 腾讯云)

    写在前面 本文参考文章 总结补充有手就行 搭建图床 PicGo 腾讯云 贤蛋大眼萌的博客 CSDN博客 一 安装PICGO 去PICGO官网安装 官网地址 但是需要去Github去下载安装包 下载发行版 更稳定 PicGo PicGo 图片
  • 腾讯云存储COS

    简介 对象存储 Cloud Object Storage COS 是由腾讯云推出的无目录层次结构 无数据格式限制 可容纳海量数据且支持 HTTP HTTPS 协议访问的分布式存储服务 腾讯云 COS 的存储桶空间无容量上限 无需分区管理 适
  • 腾讯云 Finops Crane 开发者集训营 - 云原生如何助力企业搞定成本优化

    引言 随着docker的技术普及 越来越多的企业加入了云计算发展进程 云原生产业发展迅猛 云原生建设投入比例明显 面对大规模的集群投入 部署 维护等问题也逐渐产生 越来越多的企业对云原生不断提出更高要求 同时云原生技术简化运维的效能提 升开
  • TVP新书上架

    新书速递 近期 在腾讯云 TVP 联合出书计划中 腾讯云 TVP 山金孝老师推出了新书 融合 产业数字化转型的十大关键技术 融合 产业数字化转型的十大关键技术 作者 山金孝 李琦 中译出版社 内容简介 数字经济已成为高质量发展的新引擎 数字
  • NHCP H4: Network Resource Management Topic

    NHCP H4 Network Resource Management Topic Cloud computing Single Choice T F items Single Choice 1 部署华为云计算解决方案时 一般将服务器BMC
  • 超级详细的wordpress个人博客搭建教程(图文结合)!

    一 什么是云服务器 云服务器 ElasticComputeService ECS 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 即可迅速创建或释放任意多台云服务器 云服务器帮
  • 【玩转 EdgeOne】| 腾讯云下一代边缘加速CDN EdgeOne 是安全加速界的未来吗?

    目录 前言 边缘加速与安全加固 边缘计算与CDN的融合 EdgeOne优秀的安全特性 EdgeOne卓越的性能表现 灵活的配置和管理 生态系统的支持与发展 技术创新与未来展望 EdgeOne试用 结束语 前言 在当下互联网的迅猛发展的时刻
  • 基于腾讯云手把手教你搭建网站

    目录 前言 前期准备工作 具体搭建网站 番外篇 网站开发及优化 结束语 前言 在当今数字化时代浪潮之下 作为开发者拥有一个属于自己的网站是非常有必要的 也是展示个人形象 打造影响力和给别人提供服务的重要途径 网站不仅可以作为打造自己影响力的
  • 腾讯云用centos还是ubuntu系统好?

    腾讯云服务器提供了多种操作系统选择 包括 CentOS Ubuntu Windows Server 等 用户可以根据自己的需求和习惯选择适合的操作系统 通常比较推荐安装centos 7 x版本的系统 但在 CentOS 和 Ubuntu 之

随机推荐

  • Python遥感开发之分段读取和保存遥感数据

    Python遥感开发之分段读取和保存遥感数据 1 分段读取数据 2 实现分批读取数据以及进行计算 3 实现分批保存成TIF文件 所有完整代码 4 分段TIF整合到一个TIF 5 生成一个空白TIF 每个像元值为0的TIF 前言 当遇到批量读
  • Supervisord进程管理工具的安装使用

    先来介绍 supervisord Supervisor 是一个进程监控程序 满足的需求是 我现在有一个进程需要每时每刻不断的跑 但是这个进程又有可能由于各种原因有可能中断 当进程中断的时候我希望能自动重新启动它 此时 我就需要使用到了 Su
  • dataloader的使用

    dataloader 构建可迭代的数据装载器 我们在训练的时候 每一个for循环 每一次iteration 就是从DataLoader中获取一个batch size大小的数据的 dataloader官网 torch utils data P
  • 【MySQL基础】常用函数

    文章目录 单行函数 字符函数 LENGTH CONCAT UPPER LOWER SUBSTR SUBSTRING INSTR TRIM LPAD RPAD REPLACE 数学函数 ABS ROUND CEIL FLOOR TRUNCAT
  • [每日两题系列]刷算法题咯~~

    今日题目 卡片 直线 本系列所选题目均来自力扣或者牛客网站 所选题目主要是以其中的简单题为主 中等题为辅 包含少数困难题 原因是 本人目前能力还不够 开展这个系列的目的是督促自己 在暑假的时间里也要保持有一定的刷题量 拒绝摆烂 话不多说 直
  • python矩阵教程_numpy教程:矩阵matrix及其运算

    numpy矩阵简介 NumPy函数库中存在两种不同的数据类型 矩阵matrix和数组array 都可以用于处理行列表示的数字元素 虽然它们看起来很相似 但是在这两个数据类型上执行相同的数学运算可能得到不同的结果 其中NumPy函数库中的ma
  • 插入MySQL数据库前去除重复数据的几种方法

    在数据存储过程中 可能会遇到数据主键重复的情况 我们可以通过下面几个方法进行处理 1 若数据不存在插入 存在更新 2 使用duplicate key关键字 如插入数据时发生主键冲突就更新数据 3 使用Ingore关键字 4 使用replac
  • BoxFit(缩放模式、自适应模式)

    类似于Android原生的ImageView ScaleType 以下是Flutter提供的Box缩放类型 fill Box被完全填充 相当于ScaleType的FIT XY contain 保持Box的纵横比至至少有一边填充满父控件 相当
  • 单例模式 -- 懒汉模式&饿汉模式

    目录 一 单例模式是什么 二 饿汉模式 三 懒汉模式 一 单例模式是什么 单例模式是一种设计模式 用于将类的实例化限制为一个对象 它确保一个类只有一个实例 并提供了该实例的全局访问点 这种模式被广泛用于创建对象的唯一实例 例如数据库连接和日
  • LCD(五)Backlight背光子系统

    一 Backlight背光子系统概述 LCD的背光原理主要是由核心板的一根引脚控制背光电源 一根PWM引脚控制背光亮度组成 应用程序可以通过改变PWM的频率达到改变背光亮度的目的 Backlight背光子系统构建过程结构关系图 黑色加粗部分
  • ONNX 运行时报错 ORT_RUNTIME_EXCEPTION Ort::Exception 未经处理的异常

    1 运行报错 前段时候推理时遇到一个非常奇怪的bug ONNX模型在运行时会报ORT RUNTIME EXCEPTION的异常 2 错误排查 继续运行 断点看到是在Session Run 的时候报错 断点逐语句跟踪没有更多详情的信息 重新看
  • jsp 购物车

  • 墨者学院——SQL注入漏洞测试(时间盲注)

    点击链接进入题目 点进网页 在url后加 type 1 发现没有回显 上传 type 1 and sleep 10 发现网页有明显延迟 说明sleep函数被执行 该网页存在时间注入 通过构造payload去获得数据库长度 x为猜想的数据库长
  • 【LSTM预测】基于双向长短时记忆BiLSTM(多输入单输出)数据预测含Matlab源码

    1 简介 针对长短期记忆循环神经网络在对时间序列进行学习时存在早期特征记忆效果差 难以充分挖掘整个网络流量特征等问题 提出一种基于双向长短期记忆循环神经网络的网络流量预测方法 以提高网络流量预测的准确性 对网络流量序列进行双向学习 避免单向
  • Android的手势识别

    首先 在Android系统中 每一次手势交互都会依照以下顺序执行 接触接触屏一刹那 触发一个MotionEvent事件 该事件被OnTouchListener监听 在其onTouch 方法里获得该MotionEvent对象 通过Gestur
  • Variable used in lambda expression should be final or effectively final

    问题描述 在使用java8lambda表达式的时候 有时候会遇到这样的编译报错 这句话的意思是 lambda表达式中使用的变量应该是final或者是有效的final 在Java8之前 匿名类中如果要访问局部变量的话 那个局部变量必须显式的声
  • LeetCode-1488. Avoid Flood in The City

    Your country has an infinite number of lakes Initially all the lakes are empty but when it rains over the nth lake the n
  • 迅雷5引发的Dos Generic SYNFlood网络攻击

    迅雷5引发的Dos Generic SYNFlood网络攻击 使用卡巴斯基的各位 有没有注意到卡巴最近经常会报Dos Generic SYNFlood 网络攻击 而且一报起来就没完没了 网上有人居然收到几千条还没崩溃 真是有定力 今天突然发
  • flutter_html出现蓝底

    Html data div style background color FFFFFF 123 div 原因是不支持大写颜色 替换为小写即可 String upperColor2Lower String text RegExp reg ne
  • 激发云力量--打造我的云端工具集

    0 前言 日常工作中 有很多小需求 作为码农 总喜欢自己动手做点小东西出来 也成为学习与实践的好机会 在使用腾讯云过程中 从环境搭建 各个小需求的构思 前后端技术的琢磨 学习 使用 收获很大 现在整理出来和大家分享 先说说做了哪些事情 都来