jk2K's 窝

休息,是为了更好的前行

哈喽, 我是叶萌(@jk2K), 一名来自中国的 PHP / iOS 开发者


  1. Android NDK 介绍与使用示例

    简单介绍NDK 是干啥的?全称 Native Development Kit, 允许你在 Android 应用中使用 C 或 C++ 代码 NDK 的好处 NDK 可以生成 .so 文件, 方便代码共享 增加反编译的难度 提高性能 使用示例版本说明 Android Studio: 2.2 Android Plugin for Gradle: com.android.tools.build:gradle:2.2.0 Gradle: 2.14.1 准备工作在 Android Studio 里下 …

    于  android 继续阅读

  2. 用 Git 和 Git hooks 解决多地开发时 MySQL 同步问题

    需求我经常在家和公司的不同电脑上开发一个Web项目, 代码托管可以用GitLab或者GitHub, 这解决了代码的多地同步问题, 但是MySQL一直没发现一个好的方式来同步。目前MySQL多地同步的方案主要有以下几种 使用可远程连接的MySQL, 多地开发时直接连接这个数据库, 这个方案如果网速不好的话,就不合适 A 地使用mysqldump导出sql文件,发送给 B 地,B 地再恢复到MySQL中,这个方案手动操作的话很麻烦,费时 使用git和git hooks在提交和合并代码时自动相应 …

    于  git 继续阅读

  3. 让 iTerm2 支持拖拽上传文件和右键下载文件

    条件准备 iTerm2 version 3 nightly builds 动手需要在你自己的机器和想通过ssh远程连接的机器上都安装shell integration 自动安装curl -L https://iterm2.com/misc/install_shell_integration.sh | bash 手动安装 下载这个脚本 curl -L https://iterm2.com/misc/`basename $SHELL`_startup.in >> \~/.iterm2_ …

    于  mac 继续阅读

  4. 实现 DownloadManager 下载完 apk 自动提示安装的功能

    运行环境 Android 5.1.1, API 22 解决方案 下载新版本的 apk public void downloadNewVersion() { mDownloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); // apkDownloadUrl 是 apk 的下载地址 DownloadManager.Request request = new DownloadManager …

    于  android 继续阅读

  5. Fragment 最佳实践

    初始化 Fragment对于不需要接收参数的Fragment,只需要实现public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 方法即可 传参给 FragmentFragment需要提供一个静态的创建方法, 通常叫做newInstancepublic class DemoFragment extends Fragment { public …

    于  android 继续阅读

  6. 当发布新版本时自动递增 versionCode

    需求versionCode是android应用内部用来识别版本,判断新旧用的, 希望每次发布新版本时能够自动化的自增,避免人工修改可能带来的问题 更好的做法import java.util.regex.Patterntask('increaseVersionCode') << { def buildFile = file("build.gradle") def pattern = Pattern.compile("versionCode\\s+(\\d+)") …

    于  android 继续阅读

  7. 让 fresco 支持双指缩放与拖动

    需求fresco 的 SimpleDraweeView 不支持缩放与拖动,想尽可能简单的实现这个功能 代码 说明在 PinchToZoomScaleDetector.java 的基础上实现了拖动操作, 不是很难, 在这个过程中最大的收获就是了解了ScaleGestureDetector和GestureDetector该如何使用, 好的, 尽情使用吧 参考链接 Implementing pinch zoom and drag using Android's build in gestur …

    于  android 继续阅读

  8. 为 apache 运行用户创建 ssh key

    解决方案方案1, 自动sudo -u apache ssh-keygen -t rsa 方案2, 手动你必须复制root用户生成的key到apache用户的.ssh文件夹下, 软链接是不行的, 必须复制, 复制, 复制, 重要的事情说三遍 假设apache的homedir是/var/www(检查/etc/passwd), root用户生成的私钥(key)是id_rsa-git mkdir -p /var/www/.ssh/cp /root/.ssh/id_rsa-git /var/www/.ss …

    于  ubuntu 继续阅读

  9. 自定义 ubuntu ssh 欢迎信息

    步骤 打开/etc/update-motd.d, 这个目录下面的文件会在登录成功后按照序号的顺序先后运行 cd /etc/update-motd.d 我们找到00-header这个文件, 修改它, 在文件末尾添加如下代码 cat << "EOT" /\_/\=( °w° )= ) ( // (__ __)//EOT 重新登录服务器就会看到如下效果啦 小提示重新登录服务器后也许不会看到效果, 你再登录一次就肯定会看到啦, 就酱 参考资料 http://stackov …

    于  ubuntu 继续阅读

  10. chrome 刷新 dns 缓存小技巧

    Windows按住 ctrl + f5 一段时间 Mac按住 Command + Shift + R 一段时间 吐槽“域名切换ip后chrome无法立即生效”这个问题苦恼了好久, 之前花了很多时间都没有找到解决办法, 有的朋友还专门写了个脚本去刷新chrome sockets, 脚本用过一段时间觉得还是挺麻烦, 不是最优解 参考资料 http://stackoverflow.com/questions/15289766/how-to-enable-instant-host-file-readin …

    于  chrome 继续阅读