晓东 - 当前 - 商业化

综合
编程设计游戏自媒体数据库
JavaAndroidWeb
FileAPI
浏览器超链接文字部分选中 - 按住Alt键不松并拖动鼠标。
资源预算
Server:
  主用服务器:5美金/月(首选日本Tokyo/重建服务器时可临时保留好记的IP)
    Nginx、网站、Docker等

  辅助服务器:[Debian默认已启用]让ssh支持IPv6 2.5美金/月(仅美国区“New York (New Jersey)”和“Atlanta”才有$2.50/month)
    LRA、上传GCS、自用等
    说明 - 亲测“保留IP”后在Server Settings区域会出现IP Address下拉,创建后再删除“保留IP”确实不会移除IPv4,但IPv6似乎就用不了,还未测IPv4是否依然收费!?
      停用ufw才能在线ping6: ufw disable
实务中特殊事项

编程

通用
  • Google API(比如Speech-to-Text库)若设置了setEndpoint,则至少填个cloud-platform通用范围(否则验证失败):cred.createScoped("https://www.googleapis.com/auth/cloud-platform");
  • myfaces-quarkus本地调试时访问目录路径不会自动寻找欢迎页(src\main\resources\META-INF\resources\[子目录]\index.xhtml),但Native运行时则可以;quarkus-undertow则只能找到首页欢迎页面。
  • quarkus-narayana-lra实现了MicroProfile LRA规范,但似乎只能通过 http://localhost:8070 访问,若用域名则回调指向有误!
其他
  • ...
商业
综述 - 
  Twitter发推文:有热点就发布,间隔放YouTube链接和从此网链接。
  YouTube发视频(YPP创收广告):间隔发布 - 5个1分钟内的短片、1个超过8分钟的长片。
  从此网发文章(AdSense广告联盟):软件内文用自己翻译的关键标题即可,而文章和新闻则暂用转载方式。
  GooglePlay发软件(AdMob广告联盟):基本无自然流量,需要花钱宣传,故暂不太下力气。
  Steam发游戏:100美金发一个游戏,打造的可玩了再上架。

API - 
  GCP内优先使用较新的Google Cloud APIs(仅OAuth2),稳定项目可选择支持更多验证方式(OAuth2+API密钥)的Google APIs。

网站 - 
  AI发布文章比例50%

自媒体 - 
  新:考虑发布地域无关的视频时,多发布一个English TTS版本。

  多频道经营:笑看美事 - 嬉笑怒骂、AI生成;真的有用 - 真人声音、避免AI+TTS。
  短片可使用AI+TTS,但YouTube禁止AI作曲;长片则一概真声,暂不真人出镜。

  工作流:文件临时分享(Android自带)、立体声录音(首选mp3)、录屏简繁转换图片、视频素材背景乐(首选YouTube音频库)
    TTS

    Audio2Face音频目录 - F:\ov\pkg\audio2face-2023.2.0\exts\omni.audio2face.player_deps\deps\audio2face-data\tracks

  App商店:
    消除AdMob后台警告消息"AdMob 账号不活跃..." - 6个月内必须展现下广告([更多工具]app/src/main/res/layout/activity_tools.xml)。
                
规范
命名 - 
  Google Play:com.example.v1app.[产品名/避免channel结尾]
  完全体:com.example.v1app.[产品名].fullchannel
  游戏完全体:com.example.v1game.[产品名].fullchannel
  gradle和maven组名group:com.example.v1app.[产品名]

  中国大陆:com.example.v1app.[产品名].chinachannel
  中国大陆之外:com.example.v1app.[产品名].nonchinachannel

编程 - 
  消息实体或响应对象统一用com.openle.our.core.model.SwapInfo:
    response.setStatus(HttpServletResponse.SC_OK);
    response.setContentType("application/json; charset=utf-8");
    response.addHeader("Access-Control-Allow-Origin", "*"); // CORS - doOptions/doGet/doPost
    response.addHeader("X-Robots-Tag", "noindex"); // Google Search SEO优先于robots.txt
    response.getWriter().print(new Gson().toJson(new SwapInfo.Builder(200, "text")));

  JAX-RS: return Response.noContent().header("X-Robots-Tag", "noindex").build(); // 等同addHeader(k,v);
    return Response.ok().header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_TYPE.withCharset("utf-8")).build();

  编解码:
    可逆Hex - Java 的 java.util.HexFormat.of().parseHex("e6b58be8af95") 可解码 JavaScript 编码(Array.from方法入参必须为无符号)的 Hex 字符串: 
      Array.from(new TextEncoder().encode("测试")).map(b=>b.toString(16).padStart(2, '0')).join('');

  静态资源:   https://staticfiles.openle.com/.well-known/static/public/v1/storage/people/main/network/delegated-apnic-latest_only-china-ipv6.json
  Maven仓库: https://staticfiles.openle.com/.well-known/maven/our/maven-public-snapshot/com/openle/module/core/1.0.0-SNAPSHOT/maven-metadata.xml

  异步脚本: 
    <script defer="defer" src="https://tsc.openle.com/.well-known/static/scripts/pv.js" ></script>
    或 用无需实时的Web Worker:
      document.addEventListener("DOMContentLoaded", () => {
        console.log("or (e) => { }");
        var jsFunction = function () { // 无法访问当前DOM变量,故应在Blob中先声明下该var。
            fetch('https://example.com/x?x=' + xValue).then(r => console.log(r));
        };
        new Worker(URL.createObjectURL(new Blob(["var xValue='" + location.host + "';(" + jsFunction.toString() + ")()"])));
      });

发布 - 
  都能聊:具有安装apk包的权限REQUEST_INSTALL_PACKAGES,符合Google Play的“支持附件的通信服务”政策。
                
主要

Web Products

原则
  • ...
  • ...
实战
  • 从此网 - https://congci.com/ | 上网导航 - https://nav.congci.com/

    ...
  • 怕啥网 - https://passed.app/ | 游戏频道 - games.passed.app | 游戏入口 - game.passed.app

    ...
  • 技术服务中心 - https://tsc.openle.com/ | 产品列表 - https://tsc.openle.com/main/go/v1/our/pp

    ...

App Products

原则
  • 扫码识图(Our QR Code Scanner
  • ...
实战
  • ...
  • ...

Game Products

原则
  • ...
  • ...
实战
  • 消消乐世界(Tile Matching World)

    ...
  • 种群控制(Population Control)

    路线图:
      待做 - 首关四周布置空气墙;让玩家可以发射子弹。
                                    
  • 打砖块(Breakout)

    路线图:
      待做 - ...
                                    
自建环境

服务器(Server)

服务
  • GCS免费主机 - MariaDB、Xray
    GAE免费PaaS平台 - staticfiles.openle.com、cloud.openle.com
    Vultr付费服务器 - congci.com、passed.app、tsc.openle.com
    BandwagonHost低价VPS - xiaodo.ng、Xray
  • 
                                
常用
  • 仅显示HTTP Header:curl -I https://example.com/
    或PowerShell命令(显示HTTP Header+Body):curl -v https://example.com/
    PowerShell Curl参数用法:curl.exe --help
                                    
其他

其他项

...