开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
U.S.

来说说这 3 大航空联盟 —— 星空联盟 Star Alliance

星空联盟 Star Alliance 星空联盟针对我们的当前需求来说是首先,不是说这个联盟比其他联盟好在哪里,主要是两全相害取其轻的意思。 另外也是星空联盟内的航司,基于当前我们的飞行方向和需求是符合程度最好的。     航线 对中美航线来说,美联航一直是美国航司最大的承运人,它是星空联盟的,同时又和汉莎是好基友,如果为了获得更多里程票,回国比较多的话通常 UA 是首先。 更主要的是 UA 的 Hub 在东北部,比如说 EWR,BOS,ORD,对需要回国东北部的小伙伴和西部 SFO 的小伙伴来说,显然优势比较大。 对美国南部地区的小伙伴来说,可能 UA 的优势就没有那么大了,比如亚特兰大就是 DL 的 Hub,你家如果离亚特兰大近,非要飞 UA 其实就不那么方便了。 毕竟还有行李直挂的问题。 国内联盟 国内联盟主要是国航系的,包括国航的马甲,深圳航空这种都是星空联盟。 前没多久加了个吉祥航空优联伙伴,意思就是飞吉祥也可以积累里程到星空联盟中,这个就能补充很多上海的航线。     比如说常飞 SFO-PVG 的航线,到上海后,因为不是国航的 HUB,通常机票又贵福利也不太好,现在有了吉祥,好歹也是多了一个选择。 虽然国航目前也有服务越来越拉胯的趋势了,但整体水平还是在哪里摆着的,就这样说把,让你选东航还是国航,你会选那个。 对台湾的小伙伴来说,长荣航空通常有比较高的水准,也是非常不错的选择。 虽然大陆到台湾很多时候还不能直接转机,但可以在台湾转机的小伙伴来说这个就很有优势了。 里程和福利 UA 的银卡里程只是在 UA 自己内部还算好用。 如果要联盟福利的话,你至少要飞到金卡以上才有。 能够兑换里程,更多的积累,免费行李,如果还结合一张 UA 的信用卡就会有更多的福利,包括提前登机等等。 说说 UA 的这个信用卡,是 Chase 大通银行发行的,VISA 卡标,很显然要比美国运通的在全球范围内接受程度更高一些。 这个也是优势。   https://www.isharkfly.com/t/3-star-alliance/15816

2024年05月31日 0Comments 1087Browse 0Like Read more
U.S.

来说说这 3 大航空联盟 —— 天合联盟 Skyteam

天合联盟 Skyteam 飞友对天合联盟在飞友眼里号称的是乌合联盟,DL 的里程计划叫做空中冥币。     主要原因是联盟之间的联系比较松散,DL 的里程贬值很快,通常没什么太大的用,貌似最近有所改变,不过乌合联盟这个称谓还是没有摘掉。 航线 对中美航线来说,达美航线一直不多,而且 Hub 多是在亚特兰大和底特律,对美国东北部的小伙伴不太友好。 在以前中美关系不错的时候,达美想着从美联航哪里多分点,陆陆续续开通了不少的航线,后来因为疫情问题基本上都停飞了。 就算现在开始逐步恢复了,中美航线承运能力明显不如美联航,还有时候开通得扭扭捏捏的。 架不住有时候还算便宜,也可以作为一个备选方案考虑。 国内联盟 国内联盟主要是东航系的,包括东航的马甲,还有一个是厦门航空,制服比较好看。     对台湾小伙伴来说,中华航空也是天合联盟的,KLM 和 DL 是好基友,欧洲那边飞 KLM 多的也可以积累里程过来。 原来南方航空还没有脱离天合联盟的时候,DL 的里程票可以互换南方和东方 2 大航司,感觉是非常爽的。 因为我们在国内还是飞南方的航线比较多,上次东方掉了飞机,总感觉管理上面有点混乱。 国航又飞南方不多,感觉福利少,南方航空现在那个联盟都不是,所以天合联盟对我们来说就有点鸡肋了。 里程和福利 达美的里程福利和 UA 差不多,也是分 4 个等级。 银卡等级福利也 UA 也基本上一致。 因为 DL 的里程更加不值钱,这个也就是空中冥币的由来。换句话说,飞同样的距离,获得同样的里程,星空联盟的里程价值更高一丢丢。 达美的信用卡是美国运通发行的,基本上的福利都和 Chase 发行的 UA 信用卡差不多,也没有境外交易手续费。 但是美国运通的信用卡接纳程度明显要低于 VISA,很多地方都不收运通的信用卡,就冲这点就没有那么方便了。   https://www.isharkfly.com/t/3-skyteam/15817

2024年05月31日 0Comments 625Browse 0Like Read more
U.S.

来说说这 3 大航空联盟 —— 寰宇一家 Oneworld

寰宇一家 Oneworld 寰宇一家对应的美国航司是 AA,等于就是美国的 3 大航司,一人一个联盟。     外加一个阿拉斯加航空公司,再加上一堆中东的土豪航司,顺便带上一个飞丢了飞机的马来西亚航司。 香港地区是国泰,据传闻貌似曾经南方航空退出天合联盟以后,说是有想加入寰宇一家的意向,但国泰的 Hub 在香港,南方航空的 Hub 在广州,国泰一直不积极也不同意。 JAL 也是寰宇一家的亮点,都说日本航司的服务水平比较高,这是相对欧美来说的,更多都觉得国内航司服务更好。 航线 美国航空在中美航线上的存在感还不如达美。 尤其是现在这个阶段,飞 AA 大概率在遇到航班不正常的时候会出问题,因为后续飞机可能衔接不上。 给人的感觉就是大家都飞中国,我也不能没有,但是真没有指望飞中国赚钱,开个航线先占个位子。 AA 的 Hub 在北方比较多,比如费城呀这些地方,对南部的小伙伴没有那么友好。 国内联盟 寰宇一家除了香港的国泰和它是联盟以外,国内航司没有一个是联盟内的,非常遗憾。 正如上面说的,南方航空一直和 AA 眉来眼去,但加入联盟应该是没戏。 所以南方航空和 AA 单独签了里程互换协议。     如你飞中东土豪航司多的话,寰宇一家的优势会更加明显。 就中美航线来说,AA 还真没有什么优势。 里程和福利 AA 里程和达美的里程福利和 UA 差不多,也是分 4 个等级。 只是叫法不一样,直接从金卡开始,然后在白金里面细分了白金和白金 Pro,说白了就是名字变了,其他都没变。 AA 因为我们飞得很少,里程积累也很少,反正就是感觉比乌合联盟得稍微好点吧。 但中美航线上 AA 实在太少,南方航空中美航线也不多,更多第一入境点是广州,我们第一个回国入境点一般都在上海,所以南方航空的优势对我们来说也不明显。 美国航空的信用卡是花旗银行发行的,走的是万事达的线路。 不管怎么样,肯定是比走美国运通的线路接纳程度更高一些。   https://www.isharkfly.com/t/3-oneworld/15818

2024年05月31日 0Comments 585Browse 0Like Read more
Computer Science

Discourse 安装后安全配置考虑

防火墙 防火墙是肯定要装机器上的,并且端口只开放了 443 和 22。 22 的端口还只限制了部分 IP 段的访问,通常只允许给内部网络的 SSH。 Web 服务应该只走 443,80 端口的做好自动重定向到 443。 CloudFlare 可以用一个 CloudFlare 的负载均衡。 好处是,你的 IP 地址被 CloudFlare 给屏蔽了,直接 Ping 你的网站得到的是 CloudFlare 的 IP 地址。 另外,CloudFlare 也能够帮你挡住一些不正常有威胁的访问。 备份恢复 不管再怎么防范,日常备份肯定要做的。 一般来说 1 天一个备份就够了,最差最差的情况也可以让你的程序很快恢复。 备份的时候最好采取异地备份的方式,不要把备份文件放在本地上,要备份到云存储上。 以防止别人拿到了你的服务器控制权后连备份都拿不回来了。 备份上,也需要看看备份文件的大小,通常备份文件的大小是会增加的,也需要注意下,备份了,但是没有成功的情况,上面通常会有时间戳。 流量监控 网站的流量通常都会有一定规律的,如果有条件拿到 Nginx 的 Access 日志,就可以对每天的访问流量进行监控,如果突然出现不正常的流量就要担心了。 因为我们是附件和文本分离的,大的流量其实丢给了 AWS 的 CloudFront,所以对我们来说流量那边就比较好看。 CPU 和内存使用 这个多是因为有植入木马或者别人用你机器挖矿的这种情况。 表现就是 CPU 被长时间占用到 100%,网站访问上能明显感觉到速度下降。 某些 VPS 服务商,对长时间 CPU 使用率超过 100% 可能会给你邮件通知。 登录用户 SSH 的用户需要使用强密码,禁止 root 用户登录系统。 密码隔一段时间换一个,这样通常不会那么容易被攻入系统。 邮件通知 管理员可以设置一些邮件通知,比如发布回复内容的通知等等。 总结 其实上面的一些配置大部分就是为了让管理员能够了解下当前运行状况。 主要这个是在技术层面的,多了解下流量,基本上也就差不多了。 被植入木马,很多时候是因为其他的原因,我们的其他服务器出现过几次这种情况,多是因为 Linux 自带的防火墙都没有开,还别说硬件防火墙了,整个就在裸奔。 当开了 Linux 自带的防火墙后,到目前,被植入挖矿程序的问题,几乎没有出现。   https://www.isharkfly.com/t/discourse/15768/34

2024年05月28日 0Comments 485Browse 0Like Read more
Computer Science

美国电话号码的保号神器

因 Verizon 的电话号码死贵也就算了,还信号极差,对于我们这种还要到处走走的人来说,这个漫游费根本就不是人干的事情。 2 个月居然被收了 500 多的漫游费。 Google Voice 年初的时候换了 Google Fi,这感觉一下子又回到了电话费可控的阶段了,告别了天价漫游费。 但又出现了一个问题,因为老的号码挺好的,想一直保留,现在已经用的是新号码了。 需要一个便宜的保留号码方式。 Verizon 默认是收 10 块钱的费用可以保号停服。 但是这个时间长度只有 3 个月,当 3 个月以后就会自动连接上网络,并且 12 个月只有一次机会。 一次是如果在一年内已经停网保号过一次了,那么就不可以再做一次,而且 3 个月后会自动连接网络。 结果这折腾,号码上个月根本就没用,但还是被收了一个月的电话费,简直是个冤大头。 搜来搜去,突然发现为什么不用 Google Voice 呢? Google Voice 能够允许把其他运营商的号码 Port 过来,费用是一次性的 20,每 6 个月只要这个号码能收一次短信就可以了。 简直是满足了当前的所有需求。 Port 到 Google Voice 把号码转到 Google Voice 上面也是有坑的。一定要注意的是: 转号的时间在 1 到 3 天。 没用确定号码转过来之前,不要停止原服务商的服务和套餐。否则你的号码可能就再也找不回来了,不要问我是为什么知道的。 需要获得原服务商的电话号码转移密码和账号信息,这个可以从原服务商网站上找到。 下图显示了提交转号的进程,怎么着看来也得一天。     吐槽下 Verizon 也不知道 Verizon 怎么想的,用户的合法性校验是通过短信或者他们自己的 APP 来做的。 这次遇到的情况就很郁闷,手机已经没有网络了,短信肯定是收不到了,APP 也没有办法获得验证请求。 但是 Google Voice 转号码又需要向被转的号码上发一个验证短信,以确认你是否拥有这个号码。 结果是电话 Verizon 1 个多小时,然后让他们远程给手机上面下发一个 eSim 卡才解决问题。 就在想,难道就不能提供一个通过邮件校验的方式来做吗? 上网考古了下,对 Verizon 的这种奇葩做法,很多人也是骂声一片,就你们做的这个 APP ,什么业务都往上丢,简直害人呀。     为了拿到转号要的 PIN,Verizon 要验证,然后上面的那个号码是数据卡,根本收不到短信。 你这不是欺负人嘛,不知道他们脑袋是不是门挤了。 Port 时间 当邮箱中收到下面的邮件后,就说明你的号码已经 Port 到 Google Voice 了。     电话已经可以使用了,但短信貌似还没有办法使用,显示成功,但是没有收到短信。 等了差不多一个小时就可以收到短消息了。 当号码被 Port 过来后,再登录 Verizon,会发现所有有关号码的内容都会删除了。 如果有自动扣款的设置,记得把这个自动扣款取消掉,因为不知道什么时候又莫名其妙的扣款了。     终于可以告别 Verizon 了。   https://www.isharkfly.com/t/topic/15802

2024年05月28日 0Comments 643Browse 0Like Read more
Computer Science

Discourse 设置 passkey 登录

苹果在2022年的WWDC大会上宣布了在iOS设备上可以使用一种名叫Passkey的无密码登录,苹果把它翻译成“通行密钥”,并随后又在macOS上支持它。 谷歌和微软随后也宣布在Android和Windows系统上支持通行密钥。 密码登录,要求用户设置一个高强度的密码,因为强度低,容易被破解,但强度高,又记不住。很多网站要求注册时密码必须包含大小写字母、数字和特殊符号,纯属给用户添堵。 而用Passkey登录,则无需输入密码,只需要点一下“一键登录”,就可以直接完成登录。 这种无密码登录到底是什么原理,为什么这么神奇? 其实Passkey的核心技术非常简单粗暴,就是用非对称密钥通过签名完成认证。 Discourse passkey Discourse 已经能够完全支持 passkey 的登录,并且这一登录方式作为默认选项已经放在了用户登录选项中。 在注册的时候,还是可以按照正常注册。设置部分是在注册并且激活成功后。 设置 passkey 设置 passkey 的部分是在用户的安全属性哪里。 进入你的用户选项,然后选择添加 Passkey。     如果使用的是 Windows 计算机的话,上面可以选择使用你的计算机 PIN。 我们这里选择使用其他设备,因为想使用手机的照相功能。     在随后的界面中,单击下一步继续。     随后,屏幕上会出现一个 QR 二维码,使用手机的照相机功能进行扫描。     微信的 QR 条码扫描功能无效。 手机上会显示是否保存当前网站的 Passkey,同时是 iPhone 的话还需要校验你的 FaceID。 当单击同意保存后,网站界面将会显示 Passkey 已保存。     单击 OK 继续。 Discourse 会提示要求为使用的 Passkey 创建一个名称。     可以使用默认名称,在这里,我们用名称 iPhone 来表示这个 Passkey 被 iPhone 使用。 然后单击继续。 登录 在登录的时候选择使用 Passkey 登录选项。   然后单击下一步获取 QR 二维码。     使用手机上面的照相功能,在照相机的下方,会显示是否使用 PassKey 进行登录。   按照手机上面的提示,选择要登录的账号,如果在某一个网站上,你有多个账号的话,会提示你选择那个账号进行登录。   然后下一步就需要校验你的 FaceId,就可以完成登录了。 总结 有点像微信的扫描登录的意思。 在微信扫描登录之前需要的是绑定微信号,然后进行扫码登录。 在这里需要的是先注册 Passkey 然后进行扫码登录。 从用户体验上来说和微信登录流程差不多,但微信扫码登录扫的是微信服务器提供的 QR 代码,然后通过微信回调的方式完成用户验证。 换句话说,只要用户微信是登录的,完成扫码就可以登录。 Passkey 的登录方式是哪怕用户扫码成功了,手机上面还是要进行 FaceId 验证,如果 FaceID 验证不通过,还是没有办法登录网站,感觉安全性更高。 另外,PassKey 是通过公钥私钥对的方式进行的,微信登录是通过手机访问微信 QR 方式登录,不存在生物识别二次校验。 从使用场景来说,Passkey 更加广泛,不依赖微信公众号的开发,网站不需要申请微信公众号的接口访问权限,加密方式对比微信来说也更加灵活。 但对用户体验来说,都差不太多。   https://www.isharkfly.com/t/discourse-passkey/15792

2024年05月25日 0Comments 453Browse 0Like Read more
Computer Science

使用 sync_sso 同步 DiscourseConnect 用户数据 [Java]

最近有一个使用 SSO 把已有的用户同步到 Discourse 的需求。 所以,我就根据官方针对 PHP 实现(Sync DiscourseConnect user data with the sync_sso route - developers - Discourse Meta )写了一个有关 Java 的实现。 实现的方法很简单,但是需要用到一些额外的包,最重要的是 Apache commons codec 和 Okhttp。 Apache commons codec 是用来生成数字签名的,Okhttp 是用来发送 Http Post 请求的。 设置相关的参数 这里有 4 个参数需要提前获得。 获得下面 4 个参数的方法请参考文章:Discourse 使用 DiscourseConnect 来进行用户数据同步 const apiKey = '4fe83002bb5fba8c9a61a65e5b4b0a3cf8233b0e4ccafc85ebd6607abab4651a'; const apiUser = 'system'; const connectSecret = 'jdhb19*Xh3!nu(#k'; 设置 SSO 参数 参数的设置参考了 URL Get 方法的参数设置。 我们 Java 的代码为: URIBuilder builder = new URIBuilder(); builder.addParameter("external_id", "1"); builder.addParameter("email", "info@isharkfly.com"); builder.addParameter("username", "info.visafn.sso"); builder.addParameter("add_groups", "bar"); builder.addParameter("require_activation", "false"); url = StringUtils.removeStart(builder.build().toString(),"?"); System.out.println(StringUtils.removeStart(url, "?")); Base64 和数字签名 当拿到上面 URL 的字符串后,我们有后面 2 个步骤要做。 第一个步骤就是对拿到的 URL 进行 Base64 转换, 第二个步骤就是对拿到已经转换成功的 Base64 字符串进行数字签名,签名这里用了 HMAC_SHA_256 算法。 同时在第一步获得密钥,需要作为参数结合算法参与运算。 String sso= "admin/users/sync_sso"; String sig= new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897").hmacHex(ssoPayload); 当拿到上面 2 个值后,重新构建一个 Json 数据结构。 类似下面的数据结构,然后作为 Post 参数的数据: { "sso": "P2V4dGVybmFsX2lkPTEmZW1haWw9aW5mbyU0MHZpc2Fmbi5jb20mdXNlcm5hbWU9aW5mby52aXNhZm4mcmVxdWlyZV9hY3RpdmF0aW9uPXRydWU=", "sig": "403a205a004e37ffab2bf77cc12b2eac352d71820983706d86984eec9821a0c4" } 发送 POST 请求 可以使用任何工具,只要支持 HTTP 的都可以。 现在 Java 用 OkHttp 比较多,所以我们就用 OkHttp 来发送请求。 private OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create( MediaType.parse("application/json"), objectMapper.writeValueAsString(syncSSO)); Response response = client.newCall(postRequest(path, body)).execute(); 上面的 postRequest 是一个方法,在这个方法中我们利用已有的参数来构造请求。 方法是这样写的: public Request postRequest(String path, RequestBody body) { HttpUrl.Builder urlBuilder = HttpUrl.parse(site_url + path).newBuilder(); Request request = new Request.Builder().url(urlBuilder.build().toString()) .addHeader("api-username", api_username) .addHeader("api-key", api_key) .post(body) .build(); return request; } 如果没有问题,上面的代码就能完成 SSO 数据的同步调用。   https://www.isharkfly.com/t/sync-sso-discourseconnect-java/15790

2024年05月24日 0Comments 377Browse 0Like Read more
Computer Science

Discourse Discover 添加你的网站到 Discourse 官方

discourse discover 应该允许你把你的 Discourse 实例添加到 Discourse 的 https://discover.discourse.org/ 1 页面中。 直接在你网站的配置上搜索 Discourse Discover ,余下的工作就可以交给 Discourse 了。 还没有选的,可以马上选上喔。 但显然排序肯定不会在第一页。   https://www.isharkfly.com/t/discourse-discover-discourse/15788

2024年05月24日 0Comments 513Browse 0Like Read more
Computer Science

Discourse 中可能使用的 HMAC 算法 Java 实现

在 DiscourseConnect 中,对数据的签名使用的是 HMAC 算法。 实际使用的算法为 HmacSHA256。 Java 生成签名的方法很简单。 String hmac = new HmacUtils(HmacAlgorithms.HMAC_SHA_256, "55619458534897682511405307018226").hmacHex(ssoPayload); HmacUtils 工具类是 Apache Commons Codec 提供的。     Python 和 其他语言都应该有类似的实现。   https://www.isharkfly.com/t/discourse-hmac-java/15789

2024年05月24日 0Comments 415Browse 0Like Read more
Computer Science

Discourse 使用 DiscourseConnect 调用接口 admin/users/sync_sso 422 错误

最近在调试 Java 代码的时候调用上面的 SSO 同步接口,Discourse 返回的错误信息为: {"failed":"FAILED","message":"The `external_id` is required but was blank"}     但是,在我们的代码中是设了值的。 URIBuilder builder = new URIBuilder(); builder.addParameter("external_id", "1"); builder.addParameter("email", "info@isharkfly.com"); builder.addParameter("username", "info.visafn.sso"); // builder.addParameter("add_groups", "bar"); builder.addParameter("require_activation", "false"); url = builder.build().toString(); 不知道为什么会出现上面的错误提示信息。 问题原因 上面的问题原因在于 URL Get 方法参数拼接时候的问题。 如果我们输出 url 字符串: ?external_id=1&email=info%40isharkfly.com&username=info.visafn.sso&require_activation=false Java 的 URL builder 代码会在前面添加一个 ? 号。 但是这个问好对 admin/users/sync_sso 的调用是不能接受的。     所以,为了解决上面的问题,我们需要调用一个 Java 的 API,把上面的问号从字符串中删除。 使用下面的一句话来替换掉上面的 url 直接 toString url = StringUtils.removeStart(builder.build().toString(),"?"); 随后直接运行测试代码,程序应该会返回 200 代码。   https://www.isharkfly.com/t/discourse-discourseconnect-admin-users-sync-sso-422/15787

2024年05月24日 0Comments 471Browse 0Like Read more
1234
Archives
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,315)
    • Confluence (663)
    • Gradle (12)
  • U.S. (409)
  • 文化旅游 (142)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1