舞影凌风

33 posts

android VectorDrawable 转png图片

Android上使用svg图片可以利用VectorDrawable,不仅体积小而且是矢量图,目前已经成为了开发app的不二之选。下面是一个VectorDrawable例子: <?xml version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="26dp" android:width="26dp" android:viewportWidth="26" android:viewportHeight="26"> <path android:fillColor="#ee4f4f" android:pathData="M15.746,21.714C15.036,22.541

阅读全文...

centos关闭root登录

每次用ssh登录服务器都有如下的提示: There were xx failed login attempts since the last successful login. 有人在用错误的密码在尝试登录服务器,想想就有点方。网上的解决方案是用ssh密钥登录,关闭root的方式登录。下面记录下操作方式 配置密钥登录 腾讯云管理后台可以选择加载密钥,不过得先关机。创建密钥后就会下载得到一个密钥文件(后续需要这个登录) 创建新用户 adduser user1 passwd user1 配置服务器关闭ROOT登录 vim /etc/ssh/sshd_config 查找“#PermitRootLogin yes”,将前面的“#”去掉,短尾“yes”改为“no”,并保存文件。 # PermitRootLogin no,千万不要修改成No,linux是严格区分大小写的 # 重启服务 service sshd

阅读全文...

小程序语音MP3转WAV

前言 小程序录制的语音格式是aar和mp3, 如果想语音文本识别,像百度语音等SDK要求的都是无损原声pcm格式(wav仅仅是pcm的封装),下面提供两种将mp3转换为wav的方法 0x1通过第三方接口 <?php $url = 'http://server.com/sound.mp3'; $data = json_decode(file_get_contents('http://api.rest7.com/v1/sound_convert.php?url=' . $url . '&format=wav')); if (@$data->success !== 1) { die('Failed'); } $wave = file_get_contents($data->file)

阅读全文...

开源小程序: 唯美小姐姐

0x1小程序介绍 这是一款看漂亮小姐姐的小程序,开源地址是: https://github.com/pengwei1024/HiBeauty。话不多说,先上个截图各位小主看看合不合胃口。 怎么抱走小姐姐呢? 可以微信小程序搜索 唯美小姐姐 或者扫码抱走吧 0x2原理分析 各位小主看完了小姐姐,请把口水擦干,我们来看看怎么new一个小姐姐吧。我觉得技术点主要下面两个(当然第一个才是大家最关心的): 小姐姐数据的抓取和处理 小程序从服务器拉取并展示数据 数据抓取 小姐姐的数据主要来自微博美女帅哥大V, 如x粉大魔王等等,在此向各位辛勤付出的大V致谢。抓取用的方案是Headless Chrome + selenium,简而言之就是用的服务器上web自动化方案。 为什么采用这个方案呢,直接抓取网页的方式帐号容易被封,自动登录获取cookie的技术难度都比较大。而web自动化就是模拟网页点击,一切的操作都是so easy。 不了解 Headless Chrome 和 selenium?请看下面的教程: 安装Headless Chrome selenium教程 linux上配置一个定时任务,实现全自动化的抓取,再来个图片分类器把非小姐姐图片去除,自动更新,开开心心欣赏小姐姐真是美滋滋

阅读全文...

gradle编译完成后上传apk

项目中有个需求想本地编译完成自动上传release 的apk到服务器,因为功能比较简单,不想借助第三方来实现,这是个我自定义gradle task来上传apk的例子。 自定义task task apkUpload(type: Exec, dependsOn: ['assembleRelease']) { def version = project.android.defaultConfig.versionName def apkPath = "$buildDir/outputs/apk/release/app-release.apk" commandLine "curl", "-F", "apk=@$apkPath", "上传地址" } 创建了一个Exec类型的task, 依赖assembleRelease任务, 最后执行shell curl -f apk=@{文件路径} {上传路径} 来完成上传 服务器示例 (PHP Codeigniter) /** * 上传apk * @param $version */ public function

阅读全文...

centos安装headless chrome

Centos 7 安装 直接运行安装脚本 curl https://intoli.com/install-google-chrome.sh | bash 安装完成后会提示: Successfully installed google-chrome-stable, Google Chrome 65.0.3325.146 . 运行chrome google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com 正常的话会在当前目录生成screenshot.png的文件 驱动 下载chrome驱动并放到某个目录下: http://npm.taobao.org/mirrors/chromedriver/2.36/chromedriver_linux64.zip , 运行./chromedriver, 如果能返回下面内容说明驱动安装正常 Starting

阅读全文...

PHP使用上一些问题笔记

json_encode失败切没有任何输出 # 使用json_last_error输出错误信息 var_dump(json_last_error()); # 发现错误码是5 JSON_ERROR_UTF8, 转成uft-8就好了 mb_convert_encoding($value, "UTF-8", "auto"); 参考文档 php json_encode输出空白问题 How to solve JSONERRORUTF8 error in php json_decode?

阅读全文...

搬瓦工替换ip后无法连接站点解决方案

前段时间因为某些特殊原因搬瓦工服务器在国内不能访问了(测试是否被X可以用ping.pe),还好搬瓦工提供了换ip的服务,替换ip后访问是没有任何问题了,但是不能访问任何其他网页的服务,比如用脚本安装lnmp都提示找不到服务器。我自己在服务器上测试 ping所有的服务返回都是ping: unknown host [root@localhost ~]# ping google.com ping: unknown host google.com [root@localhost ~]# ping github.com ping: unknown host github.com [root@localhost ~]# ping baidu.com ping: unknown host baidu.com 一般这种情况都是DNS解析问题,但是不可能这些知名企业解析会出问题,所以联系搬瓦工客服咨询这个问题,以下是他们给的解决方案,成功解决了我的问题:

阅读全文...

LiteApp Native Component实现原理

引述 LiteApp中有一种类似微信小程序Native的控件,像地图、Canvas等等,覆盖在WebView层级之上,比所有网页的层级都高。这种原生控件是怎么实现的呢?我们今天就从LiteApp的qy-input控件入手分析下原理 分析 先看下qy-input的关键源码 <template> <qy-native-base :hover="hover" :nativeData="nativeData" nativeTag="QiyiInput" @bindinput=""/> </template> 布局里面引用了qy-native-base, 并输入了hover、nativeData、nativeTag 3个属性,对于属性作用后面会介绍到,还是看下qy-native-base的实现, 实现类在mp-fe-core/src/platforms/qy/runtime/components/qy-native-base.js import * as nativeOps from '../../bridge/qnode-ops.native';

阅读全文...

PHP依赖管理工具composer使用

简介 Composer 是 PHP5.3以上 的一个依赖管理工具。它允许你声明项目所依赖的代码库,它会在你的项目中为你安装他们。Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。 安装 // 下载 composer-setup.php php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" // 校验签名(可选) php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified';

阅读全文...