firefox多版本独立共存、同时运行方案

firefox升级到57以后,改进步子有点大,旧扩展失效,所以希望:多个版本互不影响的共存、并且可以同时运行,经过多数次反复折腾,基本上完美达成目标。

原理及要点

  1. 通过about:profiles创建多个配置文件,每个版本使用自己独立的配置文件
  2. 启动firefox时指定 --no-remote 参数,这样可以多版本同时运行
  3. 禁用旧版本的自动更新,最好再把其配置文件目录打包备份,配置文件被破坏时可以快速恢复(针对“自动更新”这个大敌)。

操作步骤

当前已经更新到最新的 firefox ESR 60.x,是为主要版本。另新安装一个ESR 52.x 作为第二版本。即平时使用60.x,需要兼容旧应用或扩展时再启动52.x。毕竟新版本速度更快,是未来的趋势。

  1. 启动一个firefox 60,地址栏输入 about:profiles 回车,按照提示创建新建一个配置文件,命名为esr52,完成后,新配置文件将默认创建到在 AppData\RoamingAppData\Local 下各一个子目录。示例如后图
  2. 安装firefox 52 ,注意要自定义安装,并修改安装目录(推荐安装到C:\Program Files\Mozilla Firefox_ESR52),否则将把默认版本覆盖掉! 安装完毕后不要直接启动。
  3. 把进入目录 C:\Program Files\Mozilla Firefox_ESR52 ,把firefox.exe发送到桌面快捷方式,然后修改快捷方式属性:目标增加两个参数 --no-remote -P esr52  其中--no-remote即是允许多版本启动,-P 参数指定的是配置文件名,即前面第1步的命名。
  4. 通过上面修改后的快捷方式启动firefox 52,进入 选项 - 高级-更新,选中“不检查更新”。按您的需要做其他设置(这里建议不要使用firefox同步功能,避免新旧两个版本同步扩展带来的混乱;如果执意要用的话可以注册两个同步账号)。
  5. 在firefox 52中打开about:profiles,确认当前使用的是esr52的配置文件。打开该配置的“根目录”文件夹,把该文件夹整体打包备份。

杂项附注

  • 最后的firefox旧版本:  https://ftp.mozilla.org/pub/firefox/releases/52.9.0esr/win64/zh-CN/ (Mozilla官方的版本存档,各版本、各语言)
  • 还可以尝试firefox便携版(Firefox Portable ,Mozilla官方产品),从 \Other\Source\ 中复制文件 FirefoxPortable.ini 到FirefoxPortable.exe所在目录,修改参数 AllowMultipleInstances=true,即可同时多开。有很多参数,说明参看Other\Source\Readme.txt

附图

新建配置文件

about:profiles 中显示配置文件信息

多个profile版本示例,及firefox 52启动快捷方式设置示例

 

分辨银杏树的雌雄

http://blog.sina.cn/dpool/blog/s/blog_3cf5c5ca0100mn6w.html

银杏雌雄株早期鉴别(外观形态)
①看主干与主枝夹角:雄株主干枝较直立向上,分枝夹角为30度左右;雌株主干枝分枝下垂平展,夹角为50度左右。
②看落叶:雄株落叶晚;雌株落叶早。
③看叶形:雌株叶缺刻浅,雄株则正好相反。
④看树冠形态:雄株树冠形成晚些,枝条较少而细弱,层次清晰;雌株树冠形成早,枝多且粗壮,层次较杂乱。
] 16;看枝条长短:雄株枝条短,一般只有1-2厘米;雌株由于多年结果不断延伸,长度在10厘米左右。
⑥看花芽:雄株花芽大、饱满,顶部稍平;雌株花芽瘦尖而小。
⑦看花序:雄花序为柔荑花序,像桑椹花序一样;雄株则长,在花梗顶部分叉,如火柴梗。
⑧看茎杆粗细:雄株茎杆高一些,细弱一些;雌株则矮一些,粗壮些。

CentOS 7下安装pptp服务端手记

环境,初装的阿里云ECS最低配机型,CentOS 7 x64  (兼及linode的CentOS 7)

主要配置步骤

1. 安装前检查系统支持

a. 在安装之前查看系统是否支持PPTP

modprobe ppp-compress-18 && echo success

应该输出:success

yum install kernel-devel

b. 是否开启TUN/TAP

cat /dev/net/tun

应该输出:cat: /dev/net/tun: File descriptor in bad state

c. 是否开启ppp

cat /dev/ppp

应该输出:cat: /dev/ppp: No such device or address

如果环境不满足上面3个条件,表示很可能不支持pptp。  例外:linode的xen、kvm服务器,也是支持的pptp的。可能是linode内核是定制的,并不是外部ko模块,与原版CentOS表现有所不一致。

2. 安装必要包

a. 首先安装epel源

yum install epel-release

b. 安装pptp相关包

yum install ppp pptpd net-tools iptables-services

3. 修改相关配置文件

a. 主配置文件 /etc/pptpd.conf

结尾处增加如下两行,分别是pptp服务的虚拟网段网关,及分配给客户端的地址范围。

localip 192.168.9.1
remoteip 192.168.9.101-199

b. pptpd配置文件/etc/ppp/options.pptpd,结尾增加两行,给虚拟网段用的dns服务,可以使用主机商提供的dns服务器地址。

ms-dns 100.100.2.136
ms-dns 100.100.2.138

如果是linode等海外服务器,可以使用谷歌的公共dns服务器地址

ms-dns 8.8.8.8
ms-dns 8.8.4.4

c. 设置pptpd vpn服务器用户名密码,编辑文件 /etc/ppp/chap-secrets, 每行一套帐号,该文件默认有简短说明。一行帐号行示例如下,以空格分隔的4个字段:第1、3是用户名密码,其他两字段是星号

user1 * 111222333 *

d. 服务器允许ip转发内核,编辑配置文件/etc/sysctl.conf,增加如下一行

net.ipv4.ip_forward=1

4. 设置开机自动启动 pptpd, iptables,

ln -s /usr/lib/systemd/system/pptpd.service /etc/systemd/system/multi-user.target.wants/
ln -s /usr/lib/systemd/system/iptables.service /etc/systemd/system/multi-user.target.wants

 

5. iptables配置网络

a. iptables配置,配置虚拟网段NAT支持。如果pptp客户端不需要上网,可以忽略本步骤。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

,注意其中的eth0是本机网卡设备名,按实际情况修改;按虚拟网段设置NAT,如下

iptables -t nat -I POSTROUTING -s 192.168.9.0/24 -o eth0 -j MASQUERADE

b. 开放pptp端口1723,允许转发

iptables -I INPUT 7 -m state --state NEW -p tcp --dport 1723 -j ACCEPT
iptables -P FORWARD ACCEPT

c. 保存iptables规则

service iptables save

6. 阿里云ECS可能还需要几项特别设置

a. 如果windows下连接pptp,如果遇到519错误,是因为缺少内核模块 ip_nat_pptp ,运行modprobe ip_nat_pptp 即可加载,但最好设置开机自动加载:新建文件 /etc/modules-load.d/ip_nat_pptp.conf 内容为如下一行

ip_nat_pptp

b. 可能还要重建ppp文件:

rm /dev/ppp
mknod /dev/ppp c 108 0

c. 阿里云机器还要修改mtu:修改文件/etc/ppp/ip-up,在exit 0 前加入一行:

ifconfig $1 mtu 1500

d. 阿里云控制台里的安全区域,看上去跟防火墙或iptables类似的东西,要开启相应的端口。

7. 启动服务,加载相关匹配文件等

sysctl -p
systemctl start pptpd

或者单粗暴的reboot重启机器也行

centos 6 安装simple-obfs缺失及需要更新包

以下是依赖包,其中几个包centos本身不带,要到epel源中安装。autoconf, automake要更新为新版本

[root@vc6 feng]# yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
[root@vc6 feng]# yum install epel-release
[root@vc6 feng]# yum install libev-devel libsodium-devel mbedtls-devel

 

 

下面几个文件中,#include <ev.h> 改成  #include <libev/ev.h>

[feng@vc6 simple-obfs-0.0.3]$ vim src/server.h
[feng@vc6 simple-obfs-0.0.3]$ vim src/resolv.c
[feng@vc6 simple-obfs-0.0.3]$ vim src/local.h

 

rpm打包参考

http://blog.csdn.net/chengfei112233/article/details/7641923

http://hlee.iteye.com/blog/343499

域名服务商、注册续费优惠码等

国内注册商有很多,但已经很多年不用了,多方面原因,可以自行google. 这里只说国外注册。更便宜,随便迁移,经常有有优惠码,更便宜。

最广为人行的是godaddy(狗爹),号称全球最大域名商。不过他们家域名续费价格通常有点高。还有name.com, namecheap等无数多个。

通常各域名商的初注册、域名转入,价格会比较便宜,所以一个捡漏的办法:每年换一次注册商!虽然有点不厚道,但确实节省了成本。其实转入60天后就可以下一次转入,这样多转几次,也相当于折腾着续费多年,不至于忘续费而丢掉。

域名商 name.com WHOIS隐私保护 优惠码 PRIVACYPLEASE  ,效果是隐私保护免费!

excel公式实现:根据当前单元格偏移位置引用计算、多条件查找

根据当前单元格偏移位置引用计算

直接上公式示例

=INDIRECT(ADDRESS(ROW()-1,COLUMN()))

作用:引用当前单元格上一行同列的值。
原理:自己查excel自带帮助的公式说明。
特点:可以无脑的将该公式粘贴到任意位置,即做相对引用,不受表格其他内容、位置的影响。
使用场景示例:如下图所示,尾行是计算周变化值/比例。选中格事实就是=B706-B698。每周会插入8行数据。使用了上面偏移位置方案,就不用每次更新下面公式,省心且不出错。

根据相对位置定位一个单元格或一个区域

函数:OFFSET(reference, rows, cols, [height], [width])
reference是一个单元格,相对于它、偏移指定行数rows和列数cols,然后返回一个高height、宽width的区域。 height, width 省略默认为1,即返回一个单元格。rows, cols 可以为负数,表示反方向。

所以,非常适用于一组行数不确定的区域的计算。比如上例截图里的每组是周,固定为7行,如果是月,那就可以先计算一下行数,再通过 OFFSET 函数计算出区域再做汇总计算,避免痛苦地更新公式。

 

多条件查找

本方法来源于:https://www.zhihu.com/question/41820039/answer/93329442 在此表示感谢。

通用公式

=lookup(1,0/((条件1)*(条件2)*(条件3)),结果区域)

原理:参看出处说明

另外还有更多方法

华为mate 9折腾经验记录:google服务,twrp recovery, root等

使用android的历史,从最早的山寨平板开始,到使用近三年的glaxy nexus,再到nesux 5,从今年2月份开始换mate 9,至今已经半年多,记录一下经验。

mate 9的粗略印象

电池比较大,屏幕也略嫌大。华为对android做的定制,基本上还比较合理,自带的系统应用,也比较有用,比如名片扫描、二维码扫描、滚动截屏、天气、等。不便处也有,举例,最近应用列表下的清理按钮,太容易误点到,令人崩溃。

基本使用

网络:shadowsocks,kcptun,谁用谁知道。

重置与备份:华为手机助手,可以免root做整机配置备份,类似于固件工具箱的应用备份功能。

重置手机:可以通过eRecovery在线安装系统,官方不提供刷机包。

Google服务

google服务是绝对不可少的,即使在如此恶劣的网络环境下,借助shadowsocks神器。以前的系统,可能装第三方的google服务安装器,免root环境安装;最新的版本已经自带google服务了,所以整机备份后,通过eRecovery重装系统,再还原备份。

开机启动选项

Recovery: 关机状态下,按住音量上键+电源键开机,出现开机画面1-2秒后,放开电源键,音量上键继续按住不动,直至进入recovery;
出现开机画面即放开音量上键则进入恢复出厂、清空cache界面。
音量下键+电源,进入fastboot, 似乎解锁后就不能用了。

解锁等

fastboot 命令提示:failed <remote: command not allowed> 通常这种情况关闭手机找回就可以正常解锁了,选项在 “设置-云服务” 中。  from http://club.huawei.com/thread-12177115-1-1.html

第三方Recovery, Root

习惯使用twrp的recovery,不过twrp官方并不支持mate 9,所幸有高手做的mate9全系列适配版,当前已知最新版本为 3.1.0,(支持设备:MHA-L29 devices, MHA-L09 devices, MHA-AL00 devices, MHA-TL01 devices, LON-L29 devices, LON-AL00 devices)。直接下载链接 twrp-3.1.0-1-hi3660.img 。当前版本不支持机身存储的加密方式,所以要刷root包时,推荐使用tf卡。具体是:在twrp主界面 - install ,点下按钮切换存储器为sd/tf卡(默认是机身存储,sdcard目录里全是加密字符串)。

参考xda帖子:https://forum.xda-developers.com/mate-9/development/recovery-unofficial-twrp-huawei-mate-9-t3515617  ,本帖中有root的方法,使用的是Phh's superuser方案,只是因为习惯使用的是 SuperSU,故不采用。

root ,使用SuperSU的方案。当前版本 SuperSU 2.82-SR1,已经官方支持mate 9,直接下载SuperSU 2.82-SR1,注意需要 使用TWRP 3.1.0 ,系统固件 B182+ 以上版本。似乎有点诡异,以前刷这个无限重启,只好erecovery还原折腾;这次先刷了前面的phh's supersuer,因为没看到root管理器而装了supersu,但提示su文件被使用,于是死马当活马医而再刷supersu 2.82-SR1的zip包,竟然正常了,重启两次就进入系统。170920

参考xda帖子 https://forum.xda-developers.com/mate-9/development/root-supersu-2-79-t3573155

其它参考 http://www.teamandroid.com/2017/04/11/root-huawei-mate-9-emui-50-android-70-nougat/

180302后记:事实上,已经很久没有root了,之前折腾root方案的目的,其实只有一个:使用google位置记录,通过location_enable应用及xposed模块都不行;然而并没成功。于是不再root.

(个人探索)卸载windows 10自带应用方法

windows10自带了很多应用,说实在的,实在烂得让人失去吐槽的兴趣,卸载是最好的对策。网上有一些卸载方案,比如google搜索出的这两篇

感觉这里的方案有点简单粗暴,不够优雅。突然发现了一个更好的办法,利用windows任务管理器,只卸载让你感到恶心的那些“应用”。

方法如下:

  1. 如果你发现某个恶心的“应用”被打开了(比如双击打开某个视频文件后,打开了“电影与电视”),先不要关闭它。
  2. 打开windows任务管理器,进入“进程”选项卡,在“应用”一组里,找到上述应用,点右键 - 属性
  3. “属性”对话框的“常规”选项卡里的“位置”一项,是一个路径,形式如 C:\Program Files\WindowsApps\***** 最后一级目录(即前面星号代替部分)就是应用的包名,将包名复制到剪贴板
  4. 以管理员身份启动Powershell(可以在开始菜单里找到 Windows Powershell,点右键 - 以管理员身份运行),运行 Remove-AppxPackage 包名
  5. 完成。

这样就只卸载你不需要的那些应用。

补记@2023/04/25

上文内容有点太老了,近几年已经有相当多更完善的方案,比如这篇  卸载重装 Windows 10 内置应用的最全方法,包含有卸载与恢复的方法,核心内容如下:

使用的 PowerShell 命令

Get-AppxPackage:用于获得 Win 10 系统内置应用信息。
Remove-AppxPackage:用于删除 Win 10 系统内置应用。
Add-AppxPackage:用于安装 Win 10 系统内置应用。

1 查询并记录安装下来有哪些应用,算是备份

Get-AppxPackage >> D:\win10_app_list_full.txt

或者精简的格式(只包含应用名与包的全名)

get-appxpackage | Select Name, PackageFullName >> D:\win10_app_list.names.txt

2 按包名卸载应用,与前述一样Remove-AppxPackage {包全名}

也可按包名关键词卸载 Get-AppxPackage *{包名关键词}* | Remove-AppxPackage

如 Get-AppxPackage *xboxapp* | Remove-AppxPackage 卸载xboxapp相关的

3 重新装回卸载的应用

从备份的应用名称文件中找到包名,查出其对应的InstallLocation,比如查计算器windowscalculator:运行 Get-AppxPackage -allusers *windowscalculator* ,结果输出里的 InstallLocation 一行是个长长的文件路径,放到下面命令里(即引号中的部分,太丑陋而简略了),运行即可安装回来

Add-AppxPackage -register "C:\ProgramFiles\....xml" -DisableDevelopmentMode

如果要一次性恢复所有应用,即恢复所有默认自带的应用,则可运行如下

Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

运行中应该有报错,不用理会,完成后要重启windows生效。

MacPorts简介及日常应用与维护/mac port

MacPorts是在mac osx下的软件包安装系统,包含了一系列Unix/Linux工具、软件包等。同类软件还有HomeBrew。macPorts的优点之一是,它把所有软件安装到一个固定目录下,与osx本身完全隔离,不造成混乱。

安装MacPorts

 

有用知识

macports默认安装到/opt/local下

安装、卸载、升级装软件

安装软件:普通用户下运行 sudo port install {包名}   ;或者先sudo su切换到root用户下直接执行port install {包名},下面皆省略sudo 。

卸载软件:port uninstall {包名}      (其中包名)

更新软件:port upgrade {包名}

全面升级:port upgrade outdated

全面升级前,通常需要对macport自身升级(port会提示你的):port selfupdate

关于port下包名:指定版本号时包名会带空格,这时不要用引号括起来(括起来反而不认,这与bash习惯很不同),示例  port info gettext @0.19.3_1

其他有用命令

查看帮助:port help {子命令名}        (例如:port help search)

列出当前安装过的包:port installed          (注意不要用 port list installed,原因)

列出可用包:port list          (即可以通过port install安装的包)

搜索包:port search {关键词}          (有很多参数,port help search查看或文档

查看软件包介绍: port info {包名}

查看依赖包:port deps apache2

清理安装包时的临时文件:port clean {包名}    (注意不是卸载,更多参考

升级软件包时带-u参数可以同步清理旧软件包 port -u upgrade outdated

清理MacPorts里的老旧包、无用文件等

使用过一段时间后,/opt/local会变得很大(可通过 du -sh /opt/local 查看占用大小),这主要“得益于”(归罪于)port更新包时保留旧版。定时清理一下好了。

  1. 清理编译文件等 port clean --all installed
  2. 清理老旧包 port uninstall inactive

事实上这并不能让 /opt/local 变小很多,因为里面还有很多下载的源码 /opt/local/var/macports/sources/release/ 可以进去手工清理一下

某商vps上编译php时报错“undefined reference to `libiconv_open'”的处理

帮朋友的阿里云的服务器装wordpress。该服务器上面已经装了有好几个站点,web环境是wdlinux的所谓一键安装脚本,向来极其厌恶这种所谓的一键脚本,版本老化,目录不合理,乱。但为了兼容现有环境,还是决定在它上面继续。无语的是,这个web配置实在乱透了,nginx作前端,把动态请求反代到后方apache上,这样配置一个web站点,要同时设置两套web。而且还是使用php 5.2.17,这个老掉牙的版本!搞了半天,真心不想搞下去了。于是决定新安装php新版本,以php-fpm运行,简洁优雅地在nginx上跑。

之前自己服务器上路的是php 7.0.9,直接下载这个版本源码,使用之前自己的configure参数,但在make时出错了,错误消息第一行非常长,核心就是iconv有问题

undefined reference to `libiconv_open'

尝试安装iconv-devel等办法都使用了,都不行。

经过google,也有别的朋友遇到同样问题,make时加参数即可,如下:

 make ZEND_EXTRA_LIBS='-liconv'

堪称完美,在所有解决方案里最简便,向该博客作者表示感谢。 继续阅读