AI时代下的焦虑和救赎

纯属虚构

焦虑 作为IT程序员的一员,从去年开始, 似乎陷入了一种在AI时代下要失业的氛围. 身边的IT朋友,现实的IT环境,社交网站上Anthropic贩卖焦虑. 为了让自己不再被落后,从去年七月拼命的的为公司开发Ai Agent应用, 私底下也在全力的看书学习AI知识. 一直到今年5月,落地了3款AI Agent.自身的AI开发技术也有很大的成长. 但目前为止,公司没有给予我关于AI Agen...

企业AI平台架构

架构

背景 因为我居住在东京, 遇到很多企业不知道如何落实AI平台, 所以通过这篇文章将我的经验分享出来. 设计思路(简单说明) 1, 使用Next.js构建企业的应用UI, 使用Fast API/ bedlock来设计后端,实现前后端分离 2, 设计统一的”Agent Runtime“架构, 我这里用的(intent/control/context bulder/memo...

企业级开发之Next.js和FastAPI实现前后端服务分离

构建高效Web界面

背景 在之前做过的AIAgent中的Web页面,都是以Html+Css+Js搭建, 除了丑以外,在Agent的会话管理和多用户状态管理上面太过于复杂和低效. 选择 使用Next.js构建高效的UI,next.js和FastAPI实现Agent的前后端服务分离. 下面是使用Next.js搭建的Agent的UI页面: next.js代码示例(因为简单和经典,所以我就...

ChatAgent之Memory Layer设计

Memory Layer

背景 在之前做过的几个ChatAgent中,我在设计Memory Layer时,遇到了很多问题, 通过这篇文章我将讲解如何设计Memory Layer. 基础概念讲解 Memory layer仿照人的思维方式,分为短期记忆和长期记忆. 比如说:”我10分钟前刚到东京的某家咖啡馆,刚刚才坐下来边喝咖啡边在写这篇文章.“ 这就是短期记忆; “我是一个纯中国人,喜欢东京这边的生...

RAG系统和MemoryLayer之Evaluation模块

Evaluation模块

背景 在之前做过的几个AIAgent中,构建了RAG系统和Memory Layer. 现在需要对这个RAG系统和Memory Layer进行评估, 我会从以下几个维度来评估: 准确率评分(accuracy_score),精确率评分(precision_score),召回率评分(recall_score),平均覆盖率(avg_coverage),平均响应延迟的时间(avg_latenc...

AI Infra Layer之资源调度策略?

AI Infra Layer

背景 在私有化大模型系统中,我已经将Embedding模型,Reranker模型,LLM部署本地,并且实现了高并发批处理. 配置 (config.py) 我已经本地化部署了多个服务(Embedding模型,Reranker模型,LLM等等), 那么在用户请求这些微服务时, 我该如何通过config.py来实现资源调度策略? 区分 服务 ...

如何为本地模型构建高并发模块?

AI Infra Layer

背景 在私有化大模型系统中,我已经将Embedding模型,Reranker模型,LLM部署本地, 还要实现并发支持.这里我单独构建了一个高并发的模块. 选择 队列 + 批处理 架构 请求1 \ 请求2 \ 请求3 → 队列 → 批处理 → 一次 model.encode() 请求4 / 请求5 / 项目结构 (高并发批量处理请求模块) ├── infer...

如何部署本地Embedding模型?

AI Infra Layer

背景 在私有化大模型系统中, 为了避免外部依赖, 降低数据泄露的风险并提升可控性, 现将Embedding模型部署本地, 还要实现标准化接口服务,支持外部系统通过HTTP服务请求调用Embedding功能, 具备容错机制, 可扩展性和并发支持. 选择 FastAPI + Uvicorn + EmbeddingModel(e5-large) 项目结构 (本地Embedd...

FastAPI+Uvicorn+Gradio

快速构建高质量Web界面

背景 在之前做过的AIAgent中的Web页面,都是以Html+Css+Js搭建, 一个字: 丑. 选择 FastAPI + Gradio 快速构建好看的UI 下面是RAG可视化的UI: 代码很简单,如下: https://github.com/LuochuanAD/Fine-tuning-Learn/tree/main/FastAPI%2BUvicorn%2...

如何构建AIOS架构?

架构

背景 场景: 在类似于ChatGPT设计风格的对话框中,用户可以进行对话,文件分析,以及其他的一些文档生成,排版等等的轻量级ChatAgent. 注意:此特定的AIgent属于即时性对话和分析,本文不涉及RAG和长任务规划 要解决的问题: 1, 通过用户意图分析(intent router),进行长短期Memory设计 2, 用户通过引用一段文字进行追问时, 短期记...

Prompt模版(防攻击)

Prompt模版

背景 Prompt的安全和结构,这里只提供模版. 完整的prompt [System Prompt] [Tool Instructions] [Security Rules] [RAG Context] User Question System Prompt You are an AI assistant designed to solve user probl...

Prompt之上下文管理和过滤

Prompt

背景 在开发文件分析的ChatAgent时, 在多轮对话的场景中,用户上传一个文件进行分析,LLM根据这个文件分析结果来回答用户的问题. 那么在用户第2,3,4…次提问中,有时问题和文件毫无关系, 那么prompt的上下文始终包含文件的分析结果就变得不可取了, 因为输入的tokens太多,成本也变得太高.管理和过滤prompt上下文就非常有必要了 分析 1, 最终的结果效...

AI时代下该如何生存

自我反思

AI时代下该如何生存? 在AI时代,工作被代替已经是必然了. 这意味着你的收入来源将不在稳定,每个月可支配的收入将会时多时少。 而在这场变革中,真正决定你活下来的是抗风险能力: 自身的负债额度, 每月最低的消费成本, 身体和心理的健康程度。 当大部分中产阶级都被AI视为平等对待时,差距将会被拉大 顶尖的人才将会突出, 中层人将会被严重挤压 底层人将会...

Fine-tuning之SFT数据来源

数据来源分析

背景 用于微调LM的SFT数据来源有哪些? 1 开源数据集 常见: Stanford University Alpaca https://raw.githubusercontent.com/tatsu-lab/stanford_alpaca/refs/heads/main/alpaca_data.json Hugging Face datasets https://hu...

Fine-tuning之数据质量处理

数据清洗

背景 微调模型能力 = 70% 数据结构设计 + 20% 数据质量 + 10% 训练参数 这篇文章只讲数据质量, 也就是数据清洗 完整数据清洗 Pipeline 原始数据 ↓ 格式统一 ↓ 简单去重 ↓ 语义去重 ↓ 垃圾过滤 ↓ 长度控制 ↓ 语言过滤 ↓ 语义匹配检测 ↓ 困惑度过滤 ↓ 最终SFT数据 数据清洗 ...

Fine-tuning之简单的数据准备与预处理

Fine-tuning

背景 私有LLM,最重要的是用私有数据对LLM进行微调(Fine-tuning).这篇文章先讲如何进行数据准备和预处理 数据准备 通过下载“斯坦福Alpaca训练所使用的数据集”得到如下格式的json文件: alpaca_data.json [ { "instruction": "Give three tips for staying healthy....

Fine-tuning之高质量SFT数据结构设计

高质量SFT数据结构

背景 微调模型能力 = 70% 数据结构设计 + 20% 数据质量 + 10% 训练参数 这篇文章只讲 ”数据结构设计“. 高质量SFT数据的5个层级 Level 1 基础问答 Level 2 System Prompt Level 3 思考链 (CoT) Level 4 多轮对话 Level 5 Tool / RAG 分析 Level ...

Embedding之增量向量更新策略

避免重复embedding

背景 只对“新增或变化的内容”做 embedding,而不是每次重新处理所有文档。 一, 增量更新的三个层级 层级 粒度 推荐程度 文件级 PDF ⭐⭐⭐⭐ 页面级 page ⭐⭐⭐ ...

Self-Evolving的设计思想

Self-Evolving

背景 能够持续自我研发(Self-R&D)的 Agent 系统。能够持续研发新的工具、算法、策略、系统 Self-Improving Agent 的设计思想 整体架构: User Goal ↓ Task System ↓ Agent System ↓ Performance Monitoring ↓ Research System ↓ N...

私有RAG之极限优化等待时间

私有RAG

背景 在构建RAG系统过程中,我通过设计Query Rewrite, Rerank,Structural Chunk,Structural prompt等,极大的增加了RAG检索出来的知识的准确性. 但在使用集成了此RAG的flask程序软件中发现有大量的等待时间, 所以写下此篇文章尽可能的优化等待时间. 案例: 通过调用私有API, 获取大量的PDF,将PDF文件OCR...

Self-Improving的设计思想

Self-Improving

背景 这篇文章讲解Self-Improving Agent的设计思想,是在Autonomous Agent的架构基础之上增加了Self-improving自我改进 “Autonomous Agent的架构”: https://strictfrog.com/2026/03/07/AutoGPT%E5%88%86%E6%9E%90%E4%B8%8EAutonomous%E6%80%9...

未来AgentOS核心架构

AgentOS

背景 基于现实中大多数Agent失败的原因,构建未来AgentOS核心架构 AgentOS核心架构 State Machine Agent │ │ Context Engine │ │ Tools (MCP) │ │ Memory + RAG 变化趋势 ...

企业级AIOS架构

AIOS

背景 这个架构的目标是构建一个 完整 AI Operating System(AI OS),能够: 接入 LLM 管理 Tools 管理 Skills 管理 Memory 支持 Agent 支持 Workflow 支持 MCP 支持多数据源 很多 AI 产品底层结构都类似(例如 OpenAI、Anthropic、Google 的 Agent 系统)。...

ChatGPT之AIAgent系统架构

Architecture

背景 上一篇文章说了ChatGPT的界限, 为了弥补ChatGPT做不到的事情,才有了这篇文章 完整 AI Agent 系统架构 User │ ▼ ┌─────────────────┐ │ API Gateway │ └─...

ChatGPT能力界限

ChatGPT

背景 知己知彼,才能更好的开发私有的AIAgent 一、ChatGPT 天生能做的事情(LLM 原生能力) 1 语言理解与生成 2 知识推理 3 编程能力 4 信息结构化 5 多模态理解 问答 逻辑推理 写代码 从文本中抽...

AutoGPT分析与Autonomous思考

Auto-GPT

背景 Auto-GPT是能够根据用户的目标输入,制定计划,解析计划,拆解计划,执行计划,评估执行结果,并且不断循环产生结果并结合外部资源执行相应操作,逐步达到达到目的. 我对Auto-GPT的prompt提示词会自动更新这一点非常感兴趣. Auto-GPT原文讲解 用户的目标输入+初始化系统提示词 =》 检索Memory记忆库 =》 得到以前的Memory =...

Workflow+limitedPlanning的设计思想

Workflow+limitedPlanning

背景 在实际 AI Agent 系统中,很多团队采用一种折中架构: Workflow + Limited Planning,即用 LLM 做轻量规划,再执行预定义 workflow。 真实世界很多 AI 产品都用这种架构 很多系统其实就是 Workflow + Limited Planning。 例如: LangGraph(状态机 workflow) Notion AI Pe...

梦境与自我反思

纯属虚构

梦境 梦境的场景来自于:小学的学校位于一座稍微高的山坡顶上, 我的家离学校很远,但也不是遥不可及. 在一片漆黑的夜晚,伸手不见五指,似乎在这个梦境世界永远都是这样的黑夜. 我虽然看不清脚下的路,也感受不到身边任何的事物,只有空旷, 但我很清楚我的目标是位于小学学校右上角的”垃圾堆“上,而小学学校就在一座稍微高个几十米左右的山坡顶上,因为那儿有一火焰光团正在散发着模糊但持续的光,指引着身在...

AIAgent之token成本控制

成本管理

背景 在做AI产品的过程中,随着用户数的增加,每次调用LLM, 使用的提示词都在花钱. 那么如何在不影响结果的前提下,极限的减少不必要的消费呢? LLM的收费结构 这里举例OpenAI 可以看出最新的openAI API的Tokens收费结构为: Input 输入: 是Cached input的 10倍价格, 是Output的 1/10的价格 Cached i...

AIAgent之用户意图分析

Router

背景 用户的Query既有简单的信息搜索又有工具调用,或者只是简单的闲聊等等, 那么结合特定的AIAgent系统如何对用户的查询进行意图分析呢?(或者说Query分类) 特定的AIAgent的场景介绍 特定的AIAgent中RAG系统的数据集如下:(可以明显看到这是对简历的切分Chunk) resume_chunks = [ basic_chunk, skills_...

CAMEL框架详解与思考

CAMEL

背景 CAMEL是首个基于大模型的多Agent框架,其设计是多个角色扮演,互相对话,来达成共同的用户任务. CAMEL原文讲解 人类的一个idea,通过”Task Specifier“ 翻译,补充,明确化成一个具体的任务. 根据这个任务,设置2个不同的角色扮演:AI 助手 和 AI 用户. 通过这2个角色互相之间多轮对话直到 AI 用户觉得任务完成了 或者达到最大限度的对话...

财务报表分析AIAgent的搭建与思考:ReAct RAG Agent

Architecture

背景 没有复杂的RAG设计, 仅仅通过LlamaIndex的ReAct RAG Agent框架来实现财务报表的分析,就可以达到和初级商业分析师一样的水平. 但也是有许多的不足.个人觉得仅仅适合微小型企业来使用. 财报分析结构图 1, 加载A, B, ……公司的财务报表文件 from llama_index.core import SimpleDirectoryReader ...

AIAgent之完整的系统架构

Architecture

完整的架构结构 Architecture 1. Intent Layer 2. Planning Layer 3. Execution Layer 4. Tool Layer 5. Memory Layer 6. Knowledge Layer 7. Policy & Guardrail Layer 8. Observability Layer 9. Persistence Laye...

企业级AIAgent:Router + ReAct + Function Calling

Architecture

背景 用户的Query既有简单的信息搜索又有工具调用,那么就需要设计一个通用可复用的成熟的系统架构 架构结构 Architecture User Query       ↓ 1️⃣ Intent Router       ↓ ┌───────────────┬──────────────────┐ │ Simple QA     │ Tool Required     │ │ (L...

企业级AIAgent:ReAct + Function Calling

ReAct框架

背景 在完整的AI Agent中,工具的调用这里采用ChatGPT的Function Calling的思想,通过定义“Tools Schema”来连接LLM和Tools的调用. 架构结构 User Query     ↓ Agent (LLM with tool access)     ↓ Decide:     - Call Tool?     - Or Final Answe...

企业级AIAgent:Plan-and-Execute + Function Calling

Plan-and-Execute框架

背景 在完整的AI Agent中,工具的调用这里采用ChatGPT的Function Calling的思想,通过定义“Tools Schema”来连接LLM和Tools的调用. 1,先定义Tools Schema 这里用到的工具: Search Database, Send Mail, Get Weather等等. 这些工具也就是自定义工具方法的名字. tools =...

Plan-and-Execute框架思路与应用

Plan-and-Solve

背景 LangChain的Plan-and-Execute框架受到关于Plan-and-Solve的论文的启发.Plan-and-Execute非常适合更复杂的长期规划,把复杂问题拆分成一个个子任务,逐个击破. 这会频繁的的调用大模型,但可以避免ReAct Agent循环过程中产生提示词过长的问题. Plan-and-Solve 策略 上图是无样本COT和Plan-and-...

RAG检索之QueryReWrite和Reranker

Query ReWriting

背景 在设计RAG系统的过程中,我通过设计了Structural Chunks和Structural Prompt后, 检索出来的结果是符合理想的准确性. 但我想更加提高准确率,需要Query Rewrite和Reranker双重检索. Query Rewrite 方案1: 同义词扩展 例如: 用户query: python 改写成: python语言 python开发...

ReAct框架详解与思考

ReAct提示词

背景 在各种论文中, 有多种智能Agent的推理逻辑(也称框架):CoT, ToT, LLM+P等, 其中ReAct框架被LanggChain和LlamaIndex等多种AI应用开发工具作为推理引擎. ReAct框架 ReAct: Synergizing Reasoning and Acting in Language Models PromptTemplate(...

RAG之Structural Chunks设计

结构化切割

前言 针对RAG系统的构建,要想提高检索和生成结果的准确性,核心就是结构化Chunks的设计。 一, 常规的chunks切割方法 1,固定大小chunk分割 (Fixed-size Chunking) from langchain.text_splitter import CharacterTextSplitter text = "这是一个用LangChain测试固定大小分...

Prompt框架和Structural Prompt的说明

结构化提示词

前言 针对不同的AI Agent开发时,需要定制不同的prompt,那么对prompt的写法就需要更加专业,简洁,易于被LLM理解的prompt就很重要了。 一, 主流的prompt框架 CRISPE 框架 CR: Capacity and Role(能力与角色)。你希望 AI 扮演怎样的角色。 I: Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Conte...

Python的各种技巧

python

前言 python的各种技巧, 所以在此记录一下 案例 一,案例1 同一个局域网下,如何访问同伴的共享文件夹 1, 在终端输入2行命令 cd 需要共享的文件路径 python -m http.server 2, 在同一个局域网的设备(如:手机)输入 对方已共享文件的设备的IP + :8000 例如对方的IP地址为: 100.100.1.1 那么在你的手...

对Excel处理的各种Python

openpyxl库

前言 最近在工作中遇到各种要处理Excel文件的问题, 所以每次都会自己写个python脚本来自动化处理各种Excel, 所以在此记录一下 案例 一,案例1 对比2个Excel的不同,将不同的地方标记成黄色,并生成2个Excel结果文件来展示黄色不同的地方. 代码片段 workbook1 = pxl.load_workbook(r"/Users/luochuan/...

python可视化工具之vizro框架

vizro

前言 最近学到python可视化工具,推荐使用vizro框架.(听说vizro是麦肯锡公司出的,所以抱着好奇心测试一下) 一, 如何绘制箱子图和折线图 from vizro import Vizro import vizro.models as vm import vizro.plotly.express as px df = px.data.gapminder() gap...

pygame框架之贪吃蛇(140行规范代码)

贪吃蛇

前言 最近学到pygame框架,就想利用Python的语法特性,来规范写一个贪吃蛇游戏 此版本贪吃蛇特点 充分利用Python的语法特性,具有可读性高的特点,方便为以后写其他Python项目打下一个好的代码风格 Demo的gif动画如下 思路分析: 一, 我希望python中所有默认的配置都在同一个类中 class SnakeGameConf(): SCR...

xxx.github.io与customDomain绑定

私人域名

前言 2024刚打开个人网站(strictfrog.com),发现打不开页面.所以来找问题和解决方案. 原因 1, 个人域名(strictfrog.com)已到期,需要重新续费且配置DNS解析 2, github.io的IP地址变了(目前是185开头) 解决方法 步骤一:GitHub pages 设置 customDomain 在你的XXX.github.io...

Xcode15之安装iOS 17 Simulator Runtime

安装iOS17

前言 2023/09/19 Xcode15正式发布了,同时iOS17也正式登场. 先在AppStore下载Xcode15后,出现了以下问题 问题一:iOS 17无法通过Xcode15安装. 报错信息:Failed with HTTP status 400: bad request Domain: DataGatheringNSURLSessionDelegate Code: ...

2023年Blog未来计划与实行

声明

前言 经过两年的沉沦,我重新梳理了一下自身. 关于blog的未来计划与实行 Blog的声明 从2023年9月15日起,StrictFrog的blog的分为 iOS , iPadOS , watchOS , macOS , Apple tvOS , visionOS , python(还会细分) , js(还会细分) , web3 开发版块. 关于苹果相关的技术将全部使用Swi...

2021年总结及未来规划

总结

前言 2021年是个痛苦又平凡的一年. 2021年总结 今年1月,第二任女友和我分手了,我总想能平凡幸福的过完这一生以及摆脱初恋分手对我的影响,但世事总是难料. 因为文化,家庭,性格以及恋爱观的不同,我和她终究不合适. 她教会了我很多东西,改变了我的三观,虽然这些改变是建立在我的痛苦之上的,但我仍然感谢她. 两次恋爱失败影响,我于1月份死去. 今年疫情关系,只爬了5座山,4月...

centOS7系统下如何导入Python3.6.8

Linux虚拟机

前言 最近遇到一个课题,如何在centOS7系统环境下导入Python3.6 分析:我的电脑是MacPro,那么我需要安装Linux虚拟机,并且在虚拟机中安装centOS7的系统,然后在centOS7的系统下导入Python3.6.8. 花费了我2天时间,现在整理出来供大家参考. 步骤 一,下载python3.6.8 1,导入wget库:命令: yum -y instal...

2020年总结及未来规划

总结

前言 从我2015年毕业后一直从事IT行业,2015,2016,2017,2018,2019每年的年终总结都有,今年我想单独写一篇博客来记录一下. 2020年总结 从今年3月份在家办公以后,利用在地铁上上下班的时间,总共看完了4本书:«动手学深度学习», «零基础轻松学Python», «Python核心编程», «对比Excel,轻松学深度Python数据分析».未看完书籍3...

python之如何替换以反斜杠结尾的字符串

替换以反斜杠结尾的字符串

前言 最近在学Python时遇到一个难题,想将以反斜杠结尾的字符串删除或置空, 为了男人的尊严,拼了. 准备 准备假数据,格式为csv. 如下: コンピユータ名 グループ IP アドレス ウイルス対応コンテツ 0 深谷ちゃん 自社\windows 10.0.225.225 2020/7/7 r1? 1 羅川 自社\ma...

Github代码回滚

Github

前言 今年一直忙着学日语和AWS机器学习, 博客也更新的少了, 真的很抱歉. 分析 不管是工作中还是业余时间写的项目, 我们经常利用github来管理代码. 首先我们将初始版本的代码上传到github后, 利用GithubDesktop(强烈推荐)进行clong并进行版本迭代, 万一不小心上传错误代码上去了, 我们需要进行代码回滚, 将本地和远程(github)上的代码同...

2019年总结及未来规划

总结

前言 从我2015年毕业后一直从事IT行业,2015,2016,2017,2018每年的年终总结都是在微信朋友圈发的,今年我想换一个方式,决定单独写一篇博客来记录一下. 2019年总结 从今年3月份买的kindle后,利用在地铁上上下班的时间,和在东京一日游的来回坐车时间,总共看完了13本书:«Python神经网络编程», «你也能看的懂得Python算法书», «流畅的Pyt...

自定义SFSafariViewController

SFSafariViewController

前言 iOS9.0新出了一个加载网页的控件:SFSafariViewControoler, 它具有Safari浏览器的众多优点,加载更快,兼容更强. 但也有人反映SFSafariViewController的自定义不强, 接下来看看它详细的API讲解以及Demo样例. 自定义的样式为下图: 分析 关键词:SFSafariViewController 一,导入 ...

2018年总结及未来规划

总结

前言 从我2015年毕业后一直从事IT行业,2015,2016,2017,2018每年的年终总结都是在微信朋友圈发的,现在收纳整理一下. 2018年总结 2018年总结:csdn博客8篇;GitHub代码4份代码封装;编程书籍2本;个人博客的网站(www.strictfrog.com)的建立以及所有博客的迁移完成;上半年的日语培训班,下半年的日本工作。 未来规划 现在抓紧时...

CUICatalog Invalid asset name supplied '(null)'

系统日志

问题描述 工具: Xcode10.X iPhoneX iOS11.x系统 上运行项目, 此时系统打印日志为: [framework] CUICatalog:Invalid asset name supplied:'(null)' 问题发现与解决 每当我进入一个新的ViewController时, Xcode都会输出这些系统日志. 后来发现问题出现在我的一个按钮But...

Could not signal service com.apple.WebKit.WebContent 113 Could not find specified service

系统日志

问题描述 工具: Xcode10.X iPhoneX iOS11.x系统 上运行项目, 每当我进入一个加载网页的ViewController时, 此时系统打印日志为: Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service 问题发现与解决 ...

System group container for systemgroup.com.apple.configurationprofiles path is /private...

系统日志

问题描述 工具: Xcode10.X iPhoneX iOS11.x系统 上运行项目 当我使用 NavigationBar push到一个新的ViewController时. 会有一段短暂的黑色方块. push动画结束后, 往返几次. 不再出现该情况. 此时系统打印日志为: [MC] System group container for systemgroup.com.apple...

iOS之自定义UIAlertViewController

(UIPickerView, 自定义View)

前言 支持iOS8及以上,LCAlertViewController将 UIPickerView和UIAlertViewController结合, 并且添加自定义的View GITHub地址:https://github.com/LuochuanAD/LCAlertViewController 代码分析 一,UIPickerView 与UIAlertViewControl...

iOS之UsefulCategory

分类category

一,Usefulcategory说明 部分category收集于blog,实际项目等等中. 本人对其重新”筛选,整理,优化,封装”.每个分类都有详细的解释和使用说明.很有用! Github地址: https://github.com/LuochuanAD/UsefulCategory * **二,Usefulcategory使用 - NSObject(Safe) 导入到项目...

ipa包瘦身之图片无损压缩瘦身

ipa包瘦身

前言 我的项目这个版本支持了多国语言, 意味着ipa包从17.5M升到了35.6M,图片和代码也增加了很多. ipa包瘦身最有效的方法是图片.所以接下只讲关于图片的瘦身,这会用到2个工具:cartool(github地址:https://github.com/steventroughtonsmith/cartool) 和 ImageOptim (github地址:https://li...

2017年总结及未来规划

总结

前言 从我2015年毕业后一直从事IT行业,2015,2016,2017,2018每年的年终总结都是在微信朋友圈发的,现在收纳整理一下. 2017年总结 2017年收获:看了5本书:«HTML与CSS入门经典(第9版)»,«高性能iOS应用开发»,«HTML5+CSS3+JavaScript从入门到精通(标准版)»,«JavaScript入门经典(第5版)»。csdn博客20篇...

iOS之LCWebView

兼容iOS7及以上

前言 我的项目是从iOS7开始支持, 一直用UIWebView作为网页容器. 但是,为了更好的用户体验. 我将UIWebView和WKWebView封装合并成一个网页容器LCWebView. 下面是我的做法: GITHub地址:https://github.com/LuochuanAD/LCWebView 代码分析 一,LCWebViewDelegate (此代理所有方...

iOS之解决强弱循环引用的宏

强弱循环引用

代码 #define WeakSelf @weakify(self); #define StrongSelf @strongify(self); #ifndef weakify #if DEBUG #if __has_feature(objc_arc) #define weakify(object) autoreleasepool{} __weak __typeof__(object) w...

JavaScript基础之常见的错误

JavaScript

前言 这是JavaScript上书写的常见错误, 我就犯过,在此记录一下 错误集 一,使用未经定义的变量: (1) alert(variableValue);   报错:调用了未经定义的变量varibleValue. (2) function getResult(variableValue){ alert(variableValu); 错误:拼写错误,调用了未经定义的变量v...

iOS之自动检测项目中的无用的图片资源

ipa包

前言 项目大改版, 几乎所有的界面图片都需要重新更换. 那么对于之前一个或多个版本的旧的,无用的无效的图片资源,我们不可能一个一个的就找,然后复制图片名字搜索吧(注:这是一种笨方法). 那么接下来讲解的是我用的方法. 分析 一,这里有个检测工具LSUnusedResources 地址:LSUnusedResources在github上下载下来后,用mymac模拟器运行 ...

Canvas之画单一折线图

Canvas折线图

前言 使用HTML画单一折线图,效果图如下; 我只需要画折现和小圆就可以了. 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="a_canvas" width="950" height="300"></canvas> <script type="text/javascript"> ...

Canvas之画单一色圆环

Canvas单一圆环

前言 用HTML画出可动画的圆环.效果图如下: 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="canvas" width="600" height="600" style="background: "#ffffff";" ></canvas> <script> window.o...

Canvas之画多个折线图

Canvas多个折线图

前言 使用html画多个折线图,效果图如下: 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="a_canvas" width="850" height="450" ></canvas> <script> var a_canvas; var a_context; var b_canv...

Canvas之画多色圆环动画

Canvas多色圆环

前言 使用HTML画出可动画的多色圆环.效果图如下: 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="canvas_a" width="800" height="800" ></canvas> <script type="text/javascript"> window.onl...

Canvas之画折线和柱状图

Canvas画折线和柱状图

前言 使用HTML画折线和柱状图,效果图如下: 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="a_canvas" width="950" height="290"></canvas> <script type="text/javascript"> var a_canvas; va...

Canvas之画柱状图

Canvas画柱状图

前言 用HTML画圆柱图, 效果图如下,那么我只需要画圆柱就行: 详细代码CanvasForHtml5已上传到Github 分析 <canvas id="bchart_b" width="850" height="300"></canvas> <script type="text/javascript"> // char...

Xcode本地代码上传到Github

Git

一,新建仓储,填写描述信息 二,拷贝URL 三,打开Xcode,选择Perferences 四,添加仓储,并粘贴URL,填写github用户名和密码 五,cd +文件路径 六,git init 此步不可少 七,git add . 八,git commit -m “提交信息” 九,git remote add origin +粘贴第二步的URL...

duplicate symbol _OBJC_CLASS_$_XXX in

系统日志

问题描述 错误提示: 问题发现与解决 错误种类一:(文件重复,搜索,删掉) 错误种类二: (导入的是.m文件 (换成.h)) 在CanvasView.m文件里面,系统自动引入了CanvasView.h文件. 结语 博客旧版原文在CSDN上:https://blog.csdn.net/luochuanAD/article/details/72927744

_OBJC_CLASS_$_WKWebView, referenced from...and linker command failed with exit code 1 (use -v...

系统日志

问题描述 在做JS与OC交互时;Xcode报错:如下图: 问题发现与解决 (添加Webkit.framework status:optional) Go to your Project, click on General, scroll down to Linked Frameworks and Libraries, and add WebKit.frame...

_sqlite3_column_type,referenced fromXXX

系统日志

问题描述 在接收旧项目时,报错如下: 问题发现与解决 (缺少文件,添加libsqlite3.0.tbd) 结语 博客旧版原文在CSDN上:https://blog.csdn.net/luochuanAD/article/details/72897316

iOS之Des加密(含资源及Demo)

DESEncryption

前言 最近有人在群中问我des加密的事,告诉我网上的将des的资料很少. 会者不难,难着不会. 资源:GithubDemo 分析 在做des加密,解密时,你需要和服务端约定2个字段.   第一个字段:比如”xxxx”  这个字段和做图片上传约定的字段一个道理, 便于服务器唯一识别; 第二个字段:为iV[ ]  这个字段会在下图,及Demo中标注出来. 使用DESE...

iOS之tableView左划显示多个按钮

适配iOS11

前言 tableView左划出现多个可点击的按钮, 网上也有很多,但是大部分都是要iOS8以上的系统版本,不符合我的APP需求. 所以我写了一个是基于iOS7及以上系统版本的,同时要高度封装.demo的地址在本文的最后面. GITHub地址:https://github.com/LuochuanAD/OC-LCTableViewCell 代码分析 这个效果是基于...

iOS之状态栏字变大,键盘变高,键盘字变粗大

lanchScreen.storyboard

前言 有个说法:要看APP是否适配,就在4.7寸或5.5寸的手机上看APP的状态栏是否变大.效果图如下: 最近在做项目时,发现状态栏的字变大了,键盘也变得的粗大. 找到原因了,原来是我的6/6p的启动图片没加.  导致APP在6/6p(包括6s/6sP)的手机上运行找不到对应的启动图,只能默认用5的启动图片,APP运行后页面已5的比例放大.  同时会发现tabbar和n...

iOS之Node.js安装及使用

Node.js

Mac 下Node.js的安装 一,安装Homebrew 命令: ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 二,安装node.js 命令: brew install node 三:检查是否更新 命令: node -...

iOS之开发的SDK瘦身

.framework

前言 项目需求:最近开发的SDK,要提供给其他公司使用, 但是开发后的.framework的大小为3M. 但是某程APP不愿意,说包太大,要瘦身.所以,只能网上找资料.下面说说我的的做法,亲测试可以的.我一篇博客已详细介绍了开发SDK包的过程 步骤 make sure that you set Generate Debug Symbols to NO in your build ...

2016年总结及未来规划

总结

前言 从我2015年毕业后一直从事IT行业,2015,2016,2017,2018每年的年终总结都是在微信朋友圈发的,现在收纳整理一下. 2016年总结 2016年的收获。看了7本:«Objective-C高级编程:iOS与OS X多线程和内存管理»,«iOS开发进阶»,«Swift语言实战精讲(第2版)»,«企业级iOS应用开发实战»,«Effective Objective...

iOS之支持https与ssl双向验证

https和ssl

前言 在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能。App Transport Security(ATS)是苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文HTTP资源加载,连接必须经过更安全的HTTPS。苹果目前允许开发者暂时关闭ATS,可以继续使用H...

iOS之POST请求数组样式参数DES加密问题

url编码

前言 最近使用POST请求时会出现参数丢失情况 分析 在用post请求时,字典中的一个参数为数组形式,下图为json的格式: //错代码 NSMutableDictionary *dict=[[NSMutableDictionary alloc]init]; [dict setObject:self.array forKey:@"dataArray"]; ...

iOS之开发SDK(.framework和.bundle)(包括支持ATS和ssl双向验证及瘦身)

SDK

前言 我的SDK涉及到网络请求,图片,界面的背景色,字体颜色等等; 分析 开发出来的SDK是给别人用的, 所以新建一个.plist文件统一管理界面UI, 同时会将.plist文件和图片放到.bundle文件中. 网络请求我用的是AFN,在导入到SDK中时我将AFN的文件的前缀添加SH,为了避免重复(注:我将所有的文件都添加了SH前缀,不仅仅是AFN)....

iOS之自定义AlertView的传参问题

自定义AlertView

前言 最近在开发SDK的过程中,有一个需求是:点击按钮,弹框显示姓名和身份证号,同时在弹框中可以修改姓名和身份证号. 分析:需要自定义一个AlertView 和双向传值(需要用到Block). 自定义的样式为下图: 分析 关键词:自定义View 一,思路 NewFile 继承自UIView. 添加2个Block : cancelBlock 和 sureBl...