首页
在线工具
搜索
1
如何将Virtualbox和VMware虚拟机相互转换
2
使用Metrics指标度量工具监控Java应用程序性能(Gauges, Counters, Histograms, Meters和 Timers实例)
3
Typora+Picgo图床使用
4
Markdown正确使用姿势
5
Jumpserver的MFA配置
杂谈与随笔
工具与效率
源码阅读
技术管理
运维
数据库
前端开发
后端开发
Search
标签搜索
Angular
Docker
Phabricator
SpringBoot
Java
Chrome
SpringSecurity
SpringCloud
DDD
Git
Mac
K8S
Kubernetes
ESLint
SSH
高并发
Eclipse
Javascript
Vim
Centos
Jonathan
累计撰写
87
篇文章
累计收到
0
条评论
首页
栏目
杂谈与随笔
工具与效率
源码阅读
技术管理
运维
数据库
前端开发
后端开发
页面
搜索到
87
篇与
的结果
2017-01-06
在 WebStorm 下断点调试
在 WebStorm 下断点调试 配置 WebStorm 将新建的 ThinkJS 2015+ 项目导入到 WebStorm 中,然后在首选项的 JavaScript 版本设置为 ECMASCRIPT 6。如: 点击右上角的 Edit Configurations,然后新建个项目,项目类型选择 Node.js。如: 在右侧配置项 JavaScript File 里填入 www/development.js,或者通过右侧的按钮选择也可以。如: 调试 点击右上角的调试按钮,会启动 Node.js 服务。如: 如果之前已经在命令行下启动了服务,需要关掉,否则会出现端口被占用导致报错的情况。 在 app/ 目录下的文件设置断点(一定要在 app/ 目录下,不能是 src/ 目录下),如: 打开浏览器,访问对应的接口。返回 WebStorm,点击调试按钮就可以进行调试了,并且看到的是源代码。
2017年01月06日
2017-01-04
Phabricator系列之国际化-中文
Phabricator系列之国际化-中文 Phabricator现在有新的方式进行国际化(主要是中文化)了. (2015-07-06) 前一段时间, 团队用的Phabricator开始滚动往前更新, 确定下来是每周和官方网站同步一次. 之前也是为了解决一个问题, 在任务(Maniphest)分配的时候选择成员的时候, 少了一个成员, 只能用(Edit Task)重新指派人. 后来无意间发现一个清除缓存的命令, 一执行就修复好了. ./bin/cache purge 当前本文的重点在于中文化, 参考了现在最新的wiki, 发现现在的中文化比以前方便许多, 不用再每次同步都要还原几个文件再辛苦执行arc liberate 第一步, 我们新建一个PhutilCNChineseLocale.php, 里面放一个PhutilCNChineseLocale继承一个类叫做PhutilLocale, 实现getLocaleCode和getLocaleName这两个方法 分别在这两个方法里面返回zh_CN和中文 (简体中文) 第二步, 新建PhabricatorCNChineseTranslation.php, 继承PhutilTranslation类, 实现getLocaleCode和getTranslations这两个方法 getLocaleCode中返回zh_CN, getTranslations中返回一个数组, 这个数组还是用我们之前生成的数据 ./bin/i18n extract ./src/applications/ 执行完成之后会生成我们所需要的数组, 把这个数据放到getTranslations里面. (这个数据还是超大的, 我这里大概1.6M的样子, 因为Phabricator几十个应用都有了) 如果只用到某些应用的话, 也可以只生成部分 ./bin/i18n extract ./src/applications/maniphest/ 第三步, 一点一点把getTranslations里面的数组翻译过来, 把值为null的都翻译成中文就可以. 第四步, 我们进入个人设置页面, 把Translation这一项, 选择下拉框里面的中文(简体中文), 保存设置就能看到中文结果了. 最后完成的时候, 就是这样一个目录结构 ├── phabricator-zh_CN │ ├── PhabricatorCNChineseTranslation.php │ ├── PhutilCNChineseLocale.php 这里给出我们项目中的一个结构, 直接将这个clone到本地phabricator/src/extensions目录下面就可以了 https://github.com/wanthings/phabricator-zh_CN.git 本文都内容都是参考官方wiki写的, 以下都是参考文章 Adding New Classes Internationalization
2017年01月04日
2016-12-16
Angular.js中指令compile与link原理剖析
AngularJS中的Compile与Link 在AngularJS中,当我们设置了link选项时,实际上是创建了一个postLink()链接函数,以便compile()函数可以定义这个链接函数。 编译(compile)和链接(link)的职责 编译(compile) 函数负责对模板DOM进行转换。 链接(link) 函数负责将作用域(Scope)和DOM进行链接。 Compile与Link的区别 Compile函数 对指令的模板进行转换。 Link函数 在模型(Model)和视图(View)之间建立关联,并包括在元素上注册事件监听。 作用域(Scope)在链接阶段才会被绑定到元素上,因此在compile阶段操作scope会报错。 对于同一个指令的多个实例,compile只会执行一次;而link对于指令的每个实例都会执行一次。 在一般情况下,我们只需要编写link函数即可。 如果你自定义了compile函数,那么自定义的link函数将会无效,因为compile函数应该返回一个link函数供后续处理。 示例代码 // require 'SomeController' link: function(scope, element, attrs, SomeController) { // 在这里操作DOM,可以访问required指定的控制器 }
2016年12月16日
2016-12-13
随笔-第一次接触DDD与微服务
随笔-第一次接触DDD与微服务 首先,感谢公司提供这次学习DDD(领域驱动设计)的机会。 经过上次雷老师的讲解,这两个月来,我对微服务架构有了整体的了解,并持续关注了雷老师的项目。结合这次培训和个人理解,我总结了以下几点: 微服务架构的核心要素 微服务架构主要包括: 基础设施(原中间件):Redis(缓存管理)、Kafka(消息队列)、Consul/Eureka(服务注册)、Elasticsearch(搜索引擎)等。 DDD(领域驱动设计):重点在于领域建模和界限上下文的划分。 数据库:微服务架构下的数据管理策略,包括分库分表、分布式事务等。 Docker:环境容器化,让环境像代码一样可定义、可声明,提升部署效率。 其中,对我来说最陌生但最重要的部分是基础设施,这次培训重点讲解了如何将基础设施与DDD整合,并提供了基本的DEMO示例。 领域驱动设计(DDD)理解 传统软件设计通常围绕数据库进行架构,而DDD则是围绕领域和界限上下文进行业务扩展。 领域及子域 以我们公司所处的服装行业为例,面料平台就是一个领域,而它可以进一步拆分为多个子域: 交易中心(核心域) 运营中心 商家管理 扫描仪 不同子域之间存在层级关系,例如:交易中心与商家管理之间是上下级关系。 界限上下文 以交易平台为例,它的界限上下文包括: 面料管理(面料列表、搜索、详情) 面料对比(加入对比、对比分析、取消对比) 用户管理(个人用户) 实体、值对象、聚合 实体:具有唯一标识,例如“用户”。 值对象:数据不可变、无唯一标识,例如“用户地址”。 聚合:封装了实体、值对象和仓储,并通过服务暴露出去。 工厂模式 工厂用于创建和管理复杂对象,确保领域对象的一致性。 DDD 与微服务的整合 在微服务架构中,Spring Cloud 通过封装 Redis、Kafka、Consul 等基础设施,使其能够以注解和配置的方式无缝集成项目。这些组件如同武器,而DDD是一个武林高手,关键在于如何合理运用。 此外,Spring Boot 通过注解取代 XML 配置,实现“约定优于配置”,简化开发流程,符合当前行业趋势。 微服务架构落地的关键问题 1. 服务化后的管理 JAR 包如何管理?是每个包一个 Docker 镜像,还是一个界限上下文一个镜像? 端口、日志等规范化管理。 2. Docker 仓库管理 如何高效存储和管理微服务镜像,减少重复构建和拉取。 3. 安全性 可以采用 OAuth + Shiro 结合 Zuul 路由 来控制权限。 4. CI/CD(持续集成 & 持续部署) 如何使用 Jenkins 实现自动化部署,减少人工干预,提高效率。 5. 版本号管理 采用 Maven + Git 进行版本控制,避免人工打版本号。 JAR 包管理策略,避免版本混乱。 6. 单体架构向微服务迁移的思考 为什么要迁移?微服务是否适合当前企业需求? 迁移前的技术债偿还、新架构设计原则、团队变革等准备工作。 迁移过程中需要遵循的设计规范。 分布式事务一致性:虽然雷老师建议使用 TSDB 而非传统事务,但目前对其原理仍有疑问,需要进一步研究。 中间件选型:如何选择合适的消息队列、数据库、缓存方案等。 如何让其他职能团队平滑切入?(UI、产品、运维、测试、前端等) 结语 微服务架构的落地涉及众多技术和管理挑战,这次培训让我对DDD有了更深入的理解,同时也意识到微服务架构实施过程中仍有许多待解决的问题,需要进一步探索和实践。 雷老师的github地址:https://github.com/linux-china
2016年12月13日
2016-11-02
Angular2学习笔记
Angular2学习笔记 模板语法 模板是包在反引号 (`) 中的一个多行字符串。反引号 (`) ——注意,不是单引号 (') ——有很多好用的特性,比如允许多行字符串和模板字面量。 装饰器 @Component 装饰器,这个装饰器类(和我们随后将会学到的 @Directive 和 @Pipe 一样)是 InjectableMetadata 的子类型。实际上,这个 InjectableMetadata 装饰器是把一个类标识为依赖注入器实例化的目标。 TypeScript接口 接口只是 TypeScript 的一个设计期概念。JavaScript 没有接口。在生成 JavaScript 代码时,TypeScript 的接口就消失了。在运行期,没有接口类型信息可供 Angular 查找。 HTML Attribute 与 DOM Property Attribute 是由 HTML 定义的。Property 是由 DOM(Document Object Model) 定义的。 就算名字相同,HTML Attribute 和 DOM Property 也不是同一样东西。 组件交互 组件定义了一个 deleteRequest 属性,它是一个 EventEmitter 实例。(译注:deleteRequest 属性是导出 Output 属性,是组件与父级组件交互的主要方式之一。参见 输入和输出属性 和 父组件监听子组件的事件。我们需要用 @Output() 来装饰它,或者把它添加到组件元数据的 outputs 数组中,它才能在父级组件可见。) NgFor 与 trackBy 现在,把 NgForTrackBy 指令设置为那个追踪函数: <div *ngFor="let hero of heroes; trackBy:trackByHeroes">({{hero.id}}) {{hero.fullName}}</div> 追踪函数不会排除所有 DOM 更改。如果用来判断是否同一个英雄的属性变化了,Angular 就可能不得不更新 DOM 元素。但是如果这个属性没有变化——而且大多数时候它们不会变化——Angular 就能留下这些 DOM 元素。列表界面就会更加平滑,提供更好的响应。 安全导航操作符 Angular 的安全导航操作符 (?.) 是一种流畅而便利的方式,用来保护出现在属性路径中 null 和 undefined 值。这意味着,当 currentHero 为空时,保护视图渲染器,让它免于失败。 其他重要概念 数据绑定 Angular 支持多种数据绑定形式: 插值表达式:{{value}} 属性绑定:[property]="value" 事件绑定:(event)="handler()" 双向绑定:[(ngModel)]="property" 指令 Angular 有三种类型的指令: 组件:带有模板的指令 结构型指令:改变 DOM 布局的指令(如 *ngIf、*ngFor) 属性型指令:改变元素、组件或其他指令的外观和行为的指令(如 ngClass、ngStyle) 服务与依赖注入 Angular 服务是一个广义的概念,它包括应用所需的任何值、函数或特性。通常是一个具有明确用途的类。服务通过依赖注入系统被注入到需要它们的组件中。 模块 Angular 应用是模块化的,它拥有自己的模块系统,称作 NgModule。每个 Angular 应用都至少有一个 NgModule 类,也就是根模块,它习惯上命名为 AppModule,并位于一个名叫 app.module.ts 的文件中。
2016年11月02日
1
...
12
13
14
...
18