0%

上周媳妇的 iPhone 提示内存满了,重启后就进入白苹果状态。安装 itunes 以更新的方式重刷系统后恢复正常 (如果选择恢复模式则会丢失数据)。
刷系统的时候一度遇上 14 错误,重新使用更新系统的方式再刷了一遍后,顺利通过 (运气不错)。顺利登录 iPhone 后马上删除各种 App,清理后台驻留的程序,在此也提示大家 iPhone 手机也是要定期维护啊。

说起来就上面几句话,实际操作起来比较麻烦,大概弄了一个早上,把几个要点总结一下。

强制重新启动 iPhone

其实在刷机前我尝试了强制重启 iPhone,强制重启 iPhone 的方法可以参考下面链接:
https://support.apple.com/zh-cn/guide/iphone/iph8903c3ee6/ios

新版 iPhone 可以使用下面的方法

1
2
3
4
5
强制重新启动配备面容 ID 的 iPhone

若要强制重新启动 iPhone X、iPhone XS、iPhone XR、iPhone 11、iPhone 12 或 iPhone 13,请执行以下操作:

按下并快速松开调高音量按钮,按下并快速松开调低音量按钮,然后按住侧边按钮。当 Apple 标志出现时,松开按钮。

但是强制重启 iPhone 并没有成功,手机依然处于白苹果状态没有响应。

进入 DFU 模式

不进入 DFU 模式无法刷机,iPhone 不同机型进入 DFU 模式的方法不相同,具体的可以参考下面链接:
https://support.apple.com/en-us/HT201263

1
2
3
iPhone 8 or later: Press and quickly release the Volume Up button. 
Press and quickly release the Volume Down button.
Then, press and hold the Side button until you see the recovery mode screen.

安装 itunes 刷机

安装 itunes 的过程就不在细说了,正常安装即可。更新过程需要注意中间某个步骤可能耗时很长,不要着急得慢慢等,Apple 还专门有链接说明这个问题。
https://support.apple.com/zh-cn/HT203435

1
2
3
4
5
6
7
出现这种情况后,进度条可能移动非常缓慢或似乎不移动。

请等待设备完成更新、恢复或抹掉过程。

进度条会显示安装进度。所用时间取决于设备上的文件数量,以及您是要抹掉、更新还是升级 iOS 或 iPadOS。
如果设备上只有很少数据或没有数据,或者如果您要抹掉设备上的数据,这个过程可能只需一分钟时间。
如果设备包含大量文件,则这个过程可能需要数分钟至一小时不等。

刷机过程中大概率会遇上 14 错误,网络上说法很多大概就两点。

  • (1)挑线,要保证 USB 数据线有效,优先使用 USB 2.0
  • (2)多刷几次,反复刷

我这次运气不错,遇上 14 错误后,换了个 USB 2.0 的口重刷一次就过了,祝大家好运。

重启后需要输入密码,提示尝试恢复数据,进度跑完就大功告成了。

事后的清理工作

恢复完数据,登录媳妇的手机发现以下几点问题:

  • (1) 手机存储空间紧张
  • (2) 后台驻留的程序比较多

导致白苹果的原因未知,将这些问题解决了一下,希望能正常使用了。

SSL pinning

SSL Pinning是一种防止中间人攻击的技术,主要机制是在客户端发起请求–>收到服务器发来的证书进行校验,如果收到的证书不被客户端信任,就直接断开连接不继续请求。可以发现中间人攻击的要点是伪造了一个假的服务端证书给了客户端,客户端误以为真。解决思路就是,客户端也预置一份服务端的证书,比较一下就知道真假了。

SSL-pinning有两种方式:证书锁定(Certificate Pinning) 和公钥锁定( Public Key Pinning)。

证书锁定

需要在客户端代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此客户端与服务端(例如API网关)之间的通信是可以保证绝对安全。但是CA签发证书都存在有效期问题,缺点是在证书续期后需要将证书重新内置到APP中。

公钥锁定

提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。制作证书密钥时,公钥在证书的续期前后都可以保持不变(即密钥对不变),所以可以避免证书有效期问题,一般推荐这种做法。

(此小节内容摘抄自互联网)

总体思路

使用 mitmproxy https://github.com/mitmproxy/mitmproxy 进行抓包,使用 frida 绕过 SSL pinning, frida 的安装和使用这里就不再详述了,可以参考其他资料。

安装 mitmproxy

参考 https://docs.mitmproxy.org/stable/overview-installation/ 文档

可以直接下载 Linux binary: https://snapshots.mitmproxy.org/7.0.2/mitmproxy-7.0.2-linux.tar.gz, 或者使用 pip 进行安装 https://pypi.org/project/mitmproxy/
执行命令 ~/.local/bin/pip3 install mitmproxy --user

安装成功之后,有三个程序可以使用: mitmproxymitmdumpmitmweb

设置代理

在主机上执行下面几行命令设置代理

1
2
3
mitmweb -p 8080
adb shell settings put global http_proxy 127.0.0.1:8888
adb reverse tcp:8888 tcp:8080

mitmweb -p 8080 在本机起 8080 代理,在 Android 上设置 http 全局代理 127.0.0.1:8888, 最后将 Android 的 8888 端口转发到本机 8080 端口

设置 CA

https://docs.mitmproxy.org/stable/concepts-certificates/

1
The first time mitmproxy is run, it creates the keys for a certificate authority (CA) in the config directory (~/.mitmproxy by default).
Filename Contents
mitmproxy-ca.pem The certificate and the private key in PEM format.
mitmproxy-ca-cert.pem The certificate in PEM format. Use this to distribute on most non-Windows platforms.
mitmproxy-ca-cert.p12 The certificate in PKCS12 format. For use on Windows.
mitmproxy-ca-cert.cer Same file as .pem, but with an extension expected by some Android devices.

我们是 Android 应该使用 mitmproxy-ca-cert.cer,在 Android 系统安装的话,需要点击 设置 -〉安全 -〉 加密与凭证 -〉安装证书 -〉CA 证书

使用 frida 绕过 SSL pinning

使用 frida 脚本首先需要将 mitmproxy-ca-cert.cer 上传到 /data/local/tmp/cert-der.crt

使用脚本 https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
Android SSL Re-pinning frida script v0.2 030417-pier

$ adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt
$ frida -U -f it.app.mobile -l frida-android-repinning.js --no-pause

https://techblog.mediaservice.net/2017/07/universal-android-ssl-pinning-bypass-with-frida/

UPDATE 20191605: Fixed undeclared var. Thanks to @oleavr and @ehsanpc9999 !
*/

setTimeout(function(){
Java.perform(function (){
console.log("");
console.log("[.] Cert Pinning Bypass/Re-Pinning");

var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
var FileInputStream = Java.use("java.io.FileInputStream");
var BufferedInputStream = Java.use("java.io.BufferedInputStream");
var X509Certificate = Java.use("java.security.cert.X509Certificate");
var KeyStore = Java.use("java.security.KeyStore");
var TrustManagerFactory = Java.use("javax.net.ssl.TrustManagerFactory");
var SSLContext = Java.use("javax.net.ssl.SSLContext");

// Load CAs from an InputStream
console.log("[+] Loading our CA...")
var cf = CertificateFactory.getInstance("X.509");

try {
var fileInputStream = FileInputStream.$new("/data/local/tmp/cert-der.crt");
}
catch(err) {
console.log("[o] " + err);
}

var bufferedInputStream = BufferedInputStream.$new(fileInputStream);
var ca = cf.generateCertificate(bufferedInputStream);
bufferedInputStream.close();

var certInfo = Java.cast(ca, X509Certificate);
console.log("[o] Our CA Info: " + certInfo.getSubjectDN());

// Create a KeyStore containing our trusted CAs
console.log("[+] Creating a KeyStore for our CA...");
var keyStoreType = KeyStore.getDefaultType();
var keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);

// Create a TrustManager that trusts the CAs in our KeyStore
console.log("[+] Creating a TrustManager that trusts the CA in our KeyStore...");
var tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
var tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
console.log("[+] Our TrustManager is ready...");

console.log("[+] Hijacking SSLContext methods now...")
console.log("[-] Waiting for the app to invoke SSLContext.init()...")

SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").implementation = function(a,b,c) {
console.log("[o] App invoked javax.net.ssl.SSLContext.init...");
SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").call(this, a, tmf.getTrustManagers(), c);
console.log("[+] SSLContext initialized with our custom TrustManager!");
}
});
},0);

执行下面命令,绕过 SSL pinning

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
frida -U --codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida -F

____
/ _ | Frida 14.2.18 - A world-class dynamic instrumentation toolkit
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about 'object'
. . . . exit/quit -> Exit
. . . .
. . . . More info at https://frida.re/docs/home/

[.] Cert Pinning Bypass/Re-Pinning
[+] Loading our CA...
[o] Our CA Info: O=mitmproxy, CN=mitmproxy
[+] Creating a KeyStore for our CA...
[+] Creating a TrustManager that trusts the CA in our KeyStore...
[+] Our TrustManager is ready...
[+] Hijacking SSLContext methods now...
[-] Waiting for the app to invoke SSLContext.init()...
[Pixel 2::智能生活]-> exit

其中 -F 参数 attach to frontmost application 不用指定 pid 或者包名,非常方便。

使用 mitmweb 查看报文

执行 mitmweb -p 8080 后可以用浏览器访问 http://127.0.0.1:8081/ 查看报文,如果需要共享报文数据可以使用
mitmweb 界面提供的 save 功能,会保存成一个 flow 文件,后面使用 mitmweb 界面提供的 open 打开报文文件即可展示报文详细信息。

参考资料

https://shunix.com/ssl-pinning/

沉浮 A股多年,发现一个比较重要的规律,A 股变盘的时间节点大多发生在重大节假日期间,分别举例如下:

  • 「1」重大节日 (包括阳历和农历: 劳动节,国庆节,中秋节,端午节,过年 等)
  • 「2」周一/周五
  • 「3」月初/月末

有人总结出 A 股变盘时间节点和农历的 24 节气相关,每个节气的时间间隔大致在 15 到 16 天左右,这条规律
其实和上面的 「1」 说法是一致的。

思考其背后的原因,平时交易日都是连续的中间无间断,大家的交易思路和看法也比较容易连续一致。
每逢重大节日,或者月初月末,往往都是放假休息的时间,外加期间各种信息的输入量比平时大很多,这样容易有思维波动。重大节日后,主力一带节奏,容易对大家的思维进行强化,分歧转一致后,就真的变盘了。

A股还有个月初,月末效应,月初赚钱,月末亏钱,比较奇怪,可能和基金经理的月初建仓和月末考核相关,这条规律几乎是对称的,如果月末没有大跌,月初基本就没有大赚效应。

后面发现居然有一个股票技术分析流派叫季节派。(季节理论 Season Theory)

afl-fuzz 的整体架构,新手理解起来还是比较费劲,网络上发现一张图觉得不错,放上来大家看看,感谢原作者。

afl-fuzz

要正常使用 frida 首先需要把手机给 root 了, 在最近测试的情况发现 Android 10 和 Android 11 系统工作比较正常, Android 6
和其他系统似乎差一些?

要刷机首先需要下载 adb 等工具,这些工具由 Android 的 SDK platform tools 提供,下载地址为:https://developer.android.com/studio/releases/platform-tools
选择相应的操作系统版本下载即可, Google 提供了 Windows、Linux、Mac 等系统的支持。

基础镜像可以选择的 Google 的官方镜像 Factory Image,如果能自己编译 Android 系统则更好,在调试的时候可以看到系统库的符号。

我的 Android 手机为 Pixel 2 在 https://developers.google.com/android/images#walleye 上可以查找相应的镜像, 下个最新的 https://dl.google.com/dl/android/aosp/walleye-rp1a.201005.004.a1-factory-0c23f6cf.zip

要想刷镜像前提条件是先要解锁 bootloader, Pixel2 新手机解锁的命令和以前有变化,可以参考 https://source.android.com/devices/bootloader/locking_unlocking

1
2
adb reboot bootloader
fastboot flashing unlock_critical

下载解压后,里面有个 flash-all 的脚本,将手机重启到 fastboot 模式后可以直接运行, adb reboot bootloader, 重启到 fastboot 模式后,执行 flash-all 脚本,刷机系统镜像就完成了。

以前 root Android 用的都是 SuperSU 和 TWRP, 这次使用了一个不同的方法 Magisk , 安装的方法参见:
https://topjohnwu.github.io/Magisk/install.html

有两种模式, patch boot 或者 patch recovery, 安装 Magisk app 后如果界面显示 Ramdisk:Yes,则需要 patch boot。
Magisk app 的下载地址 https://github.com/topjohnwu/Magisk/releases/download/v23.0/Magisk-v23.0.apk

安装 Magisk app 后, 选择需要 patch 的镜像文件,选择后会自动生成新的修改过后的镜像文件。
获得修改后的镜像文件后,需要将修改后的镜像文件重新刷一次

1
fastboot flash boot /path/to/magisk_patched.img #or fastboot flash recovery /path/to/magisk_patched.img

刷完新的修改后的镜像,重启系统,Root 就完成了。

现在 fcitx 已经升级到了 fcitx5, 本来用着 fcitx4 挺好,也没有想着升级,在折腾 fcitx.vim 的时候发现 fcitx 居然升级了,
使得我的 vim 插件无法正常工作了,一顿折腾,本来以为很简单没想到进了个大坑 。
主要是不愿意放弃我的一万多行的 rime 用户词库,多年的积累了,不过 Linux 用户不就是老折腾吗, 唉。

fcitx5-rime 的默认的配置目录已经变为 ~/.local/share/fcitx5/rime, fcitx4 默认的配置目录是 ~/.config/fcitx/rime

安装 fcitx5 和 fcitx5 rime

1
2
sudo dnf install -y fcitx5 fcitx5-autostart fcitx5-chinese-addons fcitx5-configtool fcitx5-gtk fcitx5-qt
sudo dnf install -y fcitx5-rime

Fedora dnf 已经默认有 fcitx5-rime 的安装包了,不用自己重新编译了,非常不错。 fcitx5-chinese-addons
为 fcitx5 自己默认带的中文输入法,这些和 rime 没有什么关系,网络上有人说, fcitx 的中文输入较以前有较大改进。
fcitx5-autostart 用于自启动。后面发现系统自带的启动环境变量好像设置的有问题,不安装其实也没有什么问题,
自己手动执行 fcitx5 -d 即可。

设置正确的环境变量

修改 ~/.xprofile~/.zshrc/etc/profile 等文件

1
2
3
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XMODIFIERS="@im=fcitx5"

编译 fcitx5-qt5

为了使我们自己编译的 vnote 可以正常使用 fcitx5, 需要编译 fcitx5-qt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
git clone git@github.com:fcitx/fcitx5-qt.git

cat << EOF > build_linux.sh
QTDIR="/home/henices/Qt5.12.9/5.12.9/gcc_64/"
PATH="$QTDIR/bin:$PATH"
LDFLAGS=-L$QTDIR/lib
CPPFLAGS=-I$QTDIR/include

rm -rf build
mkdir -p build
cd build
cmake ..
make -j8
EOF

bash build_linux.sh

编译完成后将生成的 so 文件 copy 到 qt 的插件目录:

1
2
cd build
cp ./qt5/platforminputcontext/libfcitx5platforminputcontextplugin.so /home/henices/Qt5.12.9/5.12.9/gcc_64/plugins/platforminputcontexts/

配置中文环境

1
2
3
4
sudo vim /etc/locale.conf

export LANG="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"

安装 rime 词库

rime 现在已经使用 plum 管理词库,如果需要安装双拼输入法的,可以执行下面的命令:

1
2
curl -fsSL https://git.io/rime-install | bash
rime_frontend=fcitx5-rime bash rime-install double_pinyin

rime 为了保证输入速度,词库很小,为了能够自动显示更多的词组,就需要使用拓展词库。

1
2
git clone https://github.com/rime-aca/dictionaries.git
cp dictionaries/luna_pinyin.dict/* ~/.local/share/fcitx5/rime/

安装了上面的拓展词库后,输入特殊符号的能力还是比较弱,需要把 symbols.yaml 也给加进来。

https://github.com/rime/rime-prelude 提供了我们所需要的 symbols.yaml 和 default.yaml,
可以使用 東風破 安裝: rime_frontend=fcitx5-rime bash rime-install prelude

由于我们使用的是自然码双拼,需要修改的文件为 double_pinyin.custom.yaml

1
2
3
4
5
patch:
# 載入朙月拼音擴充詞庫
"translator/dictionary": luna_pinyin.extended
"punctuator/import_preset": symbols
"recognizer/patterns/punct": "^/([A-Z|a-z]*|[0-9]|10)$"

设置完成后,要重新启动输入法,比如要输入 ☆ ,输入 /xh 即可

将用户词库导入 rime

rime_dict_manager -i luna_pinyin luna_pinyin.userdb.txt

这一步很关键啊,多年的积累不能浪费了。

配置 fcitx5 皮肤

fcitx5 默认的皮肤不太好看,所以下载更新了皮肤,这款简约风格的皮肤非常符合老夫的胃口。

1
2
git clone https://github.com/thep0y/fcitx5-themes.git
cp spring ~/.local/share/fcitx5/themes -r

修改配置文件 ~/.config/fcitx5/conf/classicui.conf

1
2
3
4
5
6
7
8
9
10
11
# 垂直候选列表
Vertical Candidate List=False

# 按屏幕 DPI 使用
PerScreenDPI=True

# Font (设置成你喜欢的字体)
Font="Smartisan Compact CNS 13"

# 主题(这里要改成你想要使用的主题名,主题名就在下面)
Theme=spring

另外还有一款 fcitx5 皮肤相对流行:https://github.com/hosxy/Fcitx5-Material-Color

切换皮肤的方法是,点击鼠标右键点击 配置 -> 附加组件 -> 经典用户界面 -> 点击右边图标 -> 选择皮肤

设置 fcitx rime 单行模式

如果要将输入法设置为单行模式,需要修改配置文件 ~/.config/fcitx5/conf/rime.conf

1
PreeditInApplication=True

或者按快捷键 ctrl + alt + p, 这个快捷键可以来回切换很方便,单行还是双行就因人而异了,我个人觉得单行好点。

让 fcitx5 正确显示菜单

要做这个步骤是因为 rime 有 「部署」、「同步」这几个操作按钮,如果不正确配置的话在 fcitx5 上没法正常显示。
fcitx5 在任务上有个托盘图标,点击右键就可以看到这些菜单。

要让 fcitx 正确显示菜单,关键在于让 rime 输入法默认处于激活状态,根据 fcitx5 配置的提示第一个输入法为非激活状态。

  • (1) 将第一个输入法设置为 键盘-英语 (美国),第二个输入法设置为 中州韵
  • (2) 在全局设置中,勾上默认状态为激活,共享输入状态设置为 程序

fcitx.vim

这个章节是写给 linux vim 用户看的,没有此需求的可以直接跳过这段。

vim 确实是程序编辑的利器,但是在用vim 写中文文档的时候,有一个痛点,你在用 fcitx 写中文的时候想保存文档,
vim 必须切换到 normal 模式才能输入保存的命令 :w,进入normal 模式的方法是连续按两下 ESC,好了现在你应该
输入命令了,但是你没法输入你现在还在打中文呢,没有办法你必须先切换到英文输入法,然后才能正确地输入 :w 痛苦啊。

fcitx.vim 就是为解决这个痛点而生的插件,个人觉得这是vim 必装的几个插件之一。fcitx.vim 的github 仓库
地址为:https://github.com/lilydjwg/fcitx.vim

值得一提的是这个仓库有两个分支,fcitx4 分支 和 fcitx5 分支,使用的时候一定要分清楚,这两个分支如果
使用错了,就没法正常使用 fcitx.vim 插件了。fcitx4 和 fcitx5 dbus 对象名字有变化,导致代码通用性不好。
现在默认分支为 fcitx5,如果你使用 fcitx4 可能直接 git clone 下来就会发现插件用不了,我也是因为这个
原因才发现 fcitx 居然更新了。

参考资料

今天遇上某 App 禁止截屏,其实就是使用了下面这段代码

1
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

使用 frida 脚本可以绕过绕过这个限制 (使用 frida 需要将手机 root)。

1
2
3
4
5
6
7
8
9
10
11
12
13
Java.perform(function () {
// https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE
var FLAG_SECURE = 0x2000;
var Window = Java.use("android.view.Window");
var setFlags = Window.setFlags; //.overload("int", "int")

setFlags.implementation = function (flags, mask) {
console.log("Disabling FLAG_SECURE...");
flags &= ~FLAG_SECURE;
setFlags.call(this, flags, mask);
// Since setFlags returns void, we don't need to return anything
};
});

执行 frida 命令 frida -U -l disable.js -n com.apps.android --no-pause

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ frida -U -l disable.js -n com.apps.android --no-pause

[Pixel 2::com.apps.android]->
[Pixel 2::com.apps.android]->
[Pixel 2::com.apps.android]-> Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...
Disabling FLAG_SECURE...

值得注意的是,这里使用了 -n 参数, attach 到目标进程,要不 App 会自动重启。看到输出调试信息后,
就可以正常截屏了。

使用 objection

objection「2」有此功能,执行下面命令即可: android ui FLAG_SECURE false 但是我测试失败了。

截屏小技巧 (lzx)

Android 截屏,可以使用一个快速的技巧 adb exec-out screencap -p > test.png

参考

前些年总结的,现在看起来,过于复杂了,可能做短线的会有需求。

image

作为一个长期在帝都紫竹桥混吃的中年大叔,经常遇到需要看病的情况,主要需求有两个 (大人看病,小孩看病)。

总结附近医院情况,个人理解,供参考:

466:

缺点:没有儿科,巨贵,感觉医生喜欢过度治疗,据说一些科室已被私人承包,媳妇和自己都被坑过。
优点:离紫竹桥距离近,三甲,人通常比较少,小病,偷懒的时候可以过去。据说牙科不错,但是我没有去过。

304:

缺点:信息化程度相对较弱,但是看病流程梳理得不错。
优点:三甲,有儿科,对小儿看病有一定优待。医生水平不错,小孩在这看过几次,治疗效果不错。

现在304 改名为 解放军总医院第四医学中心,儿科的实力比以往有较大提升。

四季青:

缺点:二级医院,儿科有的医生感觉不太专业。
优点:挂号方便,有儿科,医院较大。

北方医院:

缺点:二级医院, 医院较小。
优点:离紫竹桥距离近,有保健科,小孩打预防针不错。

空总:

在这个医院多个科室看过病,家人还在这做过微创手术。

缺点:挂号有点难,人多,儿科水平一般。
优点:三甲,皮肤科北京有名,各科室水平比较均衡。信息化程度高,看病挺方便。

海总:

这个医院我没有去过,距离稍远。

(一)经济的波动就像是剪羊毛,长好了就剪、剪完了再长。拿剪子的一般就是赢家,当然赢家之间也有互相剪的,所以就有大小赢家、长短赢家之分。

(二)技术分析主要是找出趋势和预期同向运动并强化的机会,价值分析则可以在反向运动但最终会被预期改变的机会上下注。

(三)各方面都完美的系统是不可能长期存在的,放弃效率和短期安全的系统往往才会是长期安全和可重复的。这不太符合人性,也就保证了系统的独特和有效性,也有利于将精力放在长期要素和战略点的思考上。

(四)涨跌都能令人坚定的才是好标的,跌令实的更实,因为价钱便宜了。涨令虚处显得确定,因为得到市场的确认和佐证了。这就是虚实结合带来的效果,如果涨几十个点就让人有想卖的感觉,那就说明虚处不足,就不太可能是好选择,最后也许连那几十个点也不容易挣到。反过来也是一样,跌了不敢重仓加的就说明实处不够,要多检讨下自己对确定性的把握能力。

(五)资产就是金钱在不同时间下的不同属性,本质就是现在的钱和未来的钱之间进行交换,买入是用现在换未来,卖出则是把未来换现在,关键要想明白未来和现在谁更值钱就好了。牛熊市就是这样的一个判断依据,当然,对极少数的优异公司来说,未来总是会强过现在的,这就是比牛熊大势更大的大势。

(六)市场在不断变化,企业也在不断变化,变化是常态,所以任何时候都要多方向的反复审视,对世界有敬畏心。这个敬畏就是要认识到事物总是在不断变化和出现意外的,所以要尽量让自己处于有保护的状态,尽量多的假设极端情况下的可靠性。

(七)当全世界都想通过股市来对抗通货膨胀的时候,也许拿着现金让其自然贬值会是更好的选择。除非你能找到明确的新增预期,否则凭什么指望别人以更高的价钱来购买已经给他人提供过保值机会的资产呢(房地产)。

(八)每个阶段的侧重点是不一样的。在高位的时候,我们要做计算题,要定量。因为一只股票涨了这么多、这么长时间,它的方向一定是没有问题的,这个时候你再去做定性研究意义不大。在低位的时候,如果你再去算账,就很容易吃大亏。它跌了这么久,那一定是方向上出了问题,你要把方向给想明白。如果能把方向证伪掉,是不需要考虑定量的问题,因为低位天然带有弹性和赔率。

(九)真正的投机应该是在价值的基础上进行的,是通过充分的价值理解后,将其在不同人群或环境下进行切换来获益。它认识到价值有主观倾向性和个性化的特点,价值不是个稳定具体的东西,也不存在用什么方法推算的公允值,因为资本以及资本后面的人是丰富不同的,他们有着不同的成本和收益预期,在各种市场环境下也会有着不同的预期因子和贴现率,而这些在乘数和复利计算的基础下就会有着巨大的差异。这也说明了为什么理性且信息充分对称的人之间也可以产生交易并实现双赢,其原因就在于他们有着不同的价值观、需求特点和满足感。

(十)长线投资很多人认为这是最容易做的,只要买进不动就可以了,其实这完全是误解。在所有的操作策略中,长线的要求最高。他需要对企业有着极为深刻的认识,对自己有着更为坚强的控制。他清楚把握企业未来数年的发展趋势,以投资的心态分享企业的成长。他的标的物是千里挑一,在这样的机会面前它不会惧怕任何亏损,不会设置除基本面外的任何止损指标。自信、尊重客观价值、不理会乃至勇于对抗市场是必备的投资品质,日常的波动在这样的前景面前是不应去考虑的。只有这样,股票才能够真正成为改变一生的东西。