Swan

Results 67 issues of Swan

# 减脂的一点点思考和心得 ![](https://raw.githubusercontent.com/jiangjiu/blog-md/master/src/compare-2015-12.jpg) 去年11月到12月中旬大概50天的时间进行了一次减脂,使用了补剂和一些相对小众的训练和饮食方式,通过自己的尝试近距离面对了一些方法和谣言,作为胖基因星人,一直需要和减脂刚正面,记录下吧~~ (图文无关哈哈,以下完全是结合了自己客观事实的主观臆断,不可能有雷同,太基础的知识也懒得写嗯) ## 间歇性禁食 11月就尝试了大概一两周断食24小时的方式,最近正在尝试禁食16小时&八小时进食窗口饮食。一直对网上各种奇奇怪怪的说法有些疑惑。但大部分时间还是传统饮食为主,就略去不说了。 - **有人认为这样会降低基础代谢**。老实说禁食又不是节食,减脂过程中基础代谢正常情况下就是会有一些下降,只要在接受范围内就好。禁食过后身体清清爽爽的感觉还不错,虽然当天会有几个时间段相对难熬点吧。在全天禁食和16小时禁食以外,完完全全是吃够减脂期的热量的,如果能量守恒成立的话,八小时内摄入2000卡和24小时摄入2000卡并不会有本质区别,实际上研究也表明了不同时长摄入食物的热效应几乎是相同的。 - **瘦体重流失**。好吧,对于我这点点肌肉量来说,不太好流失啊。也许职业健美运动员会有这个烦恼?正常体型的人只要热量赤字合理,并没有各类文献说的那么惊悚,像我这种喝凉水都长肉的胖人就更不太担心了。。。 ## 训练 有氧和力量训练是减脂期老生常谈的两个话题,简单总结一下,还有最刺激的HIIT~ 总体来说训练强度还是不小的,效果也不错。总体来说呢,和训练消耗的热量基本成正比,无论有氧 HIIT 还是力量训练,起码的**能量守恒**还是要遵守的,就我自己的体验来说,20分钟的高强度HIIT并不会比40分钟的慢跑有更多的好处。 - **有氧**。大概一周两次晨跑,空腹。力量训练前慢跑或单车8分钟作为热身。**有氧掉肌肉问题**,真得想说肌肉没那么容易掉,尤其还是这么点点有氧的量。而且说点题外话,就16年上半年准备马拉松的训练计划,4个月的大量有氧,月跑量100-200km,每周都有一次2小时以上的匀速慢跑,肌肉并没有明显流失,可见对普通人(或胖人~)来说,这个问题不太需要担心,关注消耗的热量就好了,很显然有氧消耗的热量还是很可观的。 - **HIIT(以及各种)**。姑且把各种间歇循环乱七八糟的都放在这里说吧,我想更多的是一种理念,并不局限于做操慢跑或者是器械训练。热量消耗相当巨大,尤其是 Insanity 健身操,真是不知道做了多少遍,无需器械,无需太大空间,跟着视频挑战极限就好了。需要注意自己心率,虽然自己并没有遇到过问题,不过还是小心为好。缺点其实也挺明显的,真的很难坚持。。。不过也确实不失为训练意志力的好办法~ - **力量训练**。毫无疑问是最有意思,最容易坚持,最佳体型塑造的方式没有之一。偏爱自由重量,减脂期更多的多关节复合动作消耗,更短的组间时间以及超级组三合组巨型组的搭配。说实话使用和增肌期相同的计划也没有问题,主要是考虑以上方式可以更有效率的燃烧热量,毕竟除了新手期,减脂过程中很难增加瘦体重。无论是pull&push,上下肢或者各种分化训练,经常变换方式强迫身体动态变化总是不错的。另外值得关注的一点,**并不觉得每组都要力竭**。增肌过程与大重量和力竭有很大关联,但是如果每组都力竭很快就没有体力继续了,整体来看消耗量不如。 ## 总结 如果不认为数学就是简单的加减乘除,不认为懂得了一加一得二就可以证明各大数理,那么减脂也不是简单的节食运动,需要真真正正投入精力学习和实践。 我想每个人在这个过程中或多或少都会走弯路,都会产生疑惑,意志力也会起伏,重要的是清晰自己的目标,不断寻找科学有效的方式,再加上一点点坚持,减脂并没有那么难~...

fitness

# vscode-eslint的踩坑实践--typescript无法格式化 ## 引言 最近开发的前端项目随着开发的人员越来越多,代码规范已经是一个很难避免的问题了,虽然百度有fecs这个规则检查,但是不论是icode或者是项目本地都没有配置或检查,完全靠自觉,这是件非常扯淡的事。 icode负责人表示暂时没法支持这个,所以看来只能在本地想想办法了。 fecs中的jformater因为不支持自定义格式化调用规则,让fecs使用起来很蛋疼,所以还是选择了主流开源的eslint。 第一步现在本地配置好相关东东,下一步如果有机会的话,会在preCommit时做eslint检查,但是暂时没有项目的控制权,所以看起来也很难实现,不过应该会写写改造方案吧。 ## eslint eslint这个库本来是为了实现插件化可扩展而生的,实在不明白为什么fecs还要自己封一次。。。 可以全局安装或者本地项目中安装,编辑器通常会选择本地库优先,本地.eslintrc.js,优先这点很赞。 前几天看到了腾讯alloyteam发了规则包,对每条规则都写了注释,所以就顺手拿来主义了。 [https://github.com/AlloyTeam/eslint-config-alloy](https://github.com/AlloyTeam/eslint-config-alloy) 规则都写明白了,支持es、ts、vue、react、tsreact几种规则。 ## 小坑 js文件可以直接通过格式化快捷键进行自动修复,ts就是不可以😇. 搜了下vscode-eslint这个库的issues,一开始我以为是global和local安装eslint的问题,也怀疑过是不是alloyTeam的规则extends有问题,但是各种排查,各种最小化,发现是文件格式😂。 目前大部分的规则库给出的配置规则如下: ```js { "eslint.validate": [ "javascript", "javascriptreact", "html", "vue", "typescript", "typescriptreact"...

bug

# san-store的connect ## 引言 san-store中有一个connect对象,上面提供了常用的connect.san这个方法。 然而,链接的是组件自己new的store实例,这意味着我们没办法传入初始值,只能动态的添加actions来触发。 另外,当多个团队分别开发一个系统的不同模块时,有可能只维护自己的store,保持模块的独立性,这就需要使用connect.createConnector来手动操作了。 ## ## connect.createConnector 当实际业务中真的需要多个store实例时,可以通过这个函数自行创建方法连接store实例和San组件。步骤如下: 1. 创建store实例 2. 通过 `connect.createConnector` 方法创建一个 connect函数 3. 调用这个函数对刚刚声明的store实例和组件进行connect ```js import {Store, connect} from 'san-store'; // 创建模块A中的store实例 const storeA...

summarize

# san-store默认值问题 ## 引言 store中的属性有默认值是个很常见的场景,然而在业务中,大部分同学并不知道如何去搞,甚至在多个组件attached的时候触发action去添加默认值,既分散了状态,又写了很多无意义的代码。 究其原因可能是因为connect.san这个方法吧。 ## connect.san的问题 connect.san作为连接store实例和组件的桥梁,在业务开发中无疑是很好用的。 但是,这样的桥梁只能连san-store默认提供的store实例,无法在`new Store()`的时候传入初始值,导致了引言中的问题。 下一篇会说下如何自己手动new实例并connect,本篇只探讨默认值的初始化。 ## bad case ```js connect.san({username},{changeUsername})({ template:` {{username}} `, attached() { this.actions.changeUsername('zhangsiyuan') } }) ``` 业务开发中,经常遇到这种写法。 明明username需要一个默认值,但是依赖这个属性的多个组件或实例都写在attached里面,谁先attached谁去触发。 另外一种极端场景,store中的username只是作为共享状态的缓存,也没有修改的需求,但是需要在各个依赖的组件attached时候触发actions,这是不需要的。 ##...

summarize

# 通过url保存筛选条件的设计实践 ## why 接上一篇,routeTo方法其实很大程度上是为这样场景封装的。 cms系统中,一个常见的场景是: 各类筛选条件,点击查询按钮 / 页码,发起请求获得相应数据。 需求: 当页面刷新(粘贴给其他人)或者跳转(点击详情再返回)时,希望能保存当前的筛选状态和页码。 通过url来保存是很常见的做法。 如何在san框架下,每次查询的时候都把筛选条件送到url上?可能会遇到的问题? ## 设计 无非是几个生命周期的钩子和实例方法的处理。 #### fetchAndFill函数 1. 请求api 2. 拿到response中的数据填充至data/store中 #### route钩子: 1. fetch各种资源,地区、下拉选项等(一般都需要缓存起来) 2. fetchAndFill #### attached钩子:...

summarize

# 封装routeTo方法简化SPA开发 在使用san-router的时候,路由跳转有两种操作方式: #### 声明式 一般的跳转会使用Router-Link组件的to属性进行操作。 ```js ``` 声明式的组件进行跳转,简单轻便,但也仅限于此,复杂一点的逻辑就不灵了。 #### 调用router上的方法 举个官方文档的栗子: ```js router.listen(function (e) { e.suspend(); checkPermission().then(invalid => { if (invalid) { e.stop(); this.locator.redirect('/forbidden'); return; } e.resume(); }); });...

summarize

# 生酮饮食月记 最近计划了三个月的生酮饮食。 十月六号到今天整整30天,想来已经达到了体验的目的,因为一些原因不想再继续,留篇博客到此为止吧。 ## 什么是生酮饮食? 简而言之,就是以优质脂肪为主的供能方式。 脂肪供能达到总热量的75%,蛋白质20%,碳水只有5%。 身体大概会花两周适应这种酮体供能的方式。 懒得写了,有兴趣的百度吧。 ## 聊聊感受 ##### 第一印象,体重掉的是真快呀。 前5天大概每天一斤,体重从79.8冲到76只用了一周多。 虽然知道大部分是糖原消失,碳水减量带来的水分流失,但是看到称上的数字下降还是挺爽的~ ##### 第二感觉,力量下降的厉害。 失去糖原补充,在高强度的训练下很难survive。 整体力量下降了大概20%,运动一小会儿后就会难以坚持,有时候只能咬牙继续,但效率已经大幅度降低了。 ##### 第三,不会有血糖波动的不适感了。 关于这点其实蛮爽的,适应后几乎没有那种饿的胃疼的感觉,因为酮体无时无刻都可以从脂肪储备产生。 不过,相伴而来的就是再也很难体验高碳水带来了血糖浓度和多巴胺浓度上升的幸福感了,同时时不时的嗜糖症状让人很难受。 ##### 如果还有的话,应该就是优质脂肪还是挺让人愉悦的。 芝士就是力量。 ## 好与坏 看起来,如果碳水抵抗的人可以尝试这种方式进行减脂会更好些,大部分人还是不要缺乏某一种宏观营养素的好。...

fitness

# 什么时候吃水果比较好? ## 引言 最近看了一个健身模特的youtube视频,讲了讲果糖的机理,总结下~ ## 糖原 人体糖原分为两种: 1. 肌糖原 储存在人体肌肉中,容量较大,约占糖原总量2/3 2. 肝糖原 肝脏中,容量小 1/3 ## 肝糖原相关 * 人体进食淀粉类含有的葡萄糖等、果糖、乳糖后,一部分进入血液直接供能,剩余的可以变成肝糖原储存,如果进食过多会直接转化为脂肪储存。 * 空腹时糖原异生增加,即蛋白质分解成氨基酸,脂肪分解成甘油在肝脏中转为糖原;肌肉收缩产生乳酸,通过肝脏代谢转为肌糖原。 * 正常饮食会使肝糖原不断得到补充,减少糖原异生,蛋白质得到留存。 ## 肌糖原相关 * 剧烈运动时,肌糖原分解成乳酸,血液循环到肝脏转化为肝糖原或葡萄糖供能。 * 肌糖原不能提升血糖浓度,只能给肌肉所用。 *...

fitness

# san.nextTick与事件循环 在san框架中,发生数据变更时会更新视图,这个更新过程是异步执行的。 在读源码的过程中发现这个异步调用的`san.nextTick`方法使用了html5的API:`MutationObserver`,引发了对事件循环执行顺序的好奇。。 研究了一下,现在就来聊聊`san.nextTick`与事件循环。 ## 事件循环中的microtask & macrotask [Tasks, microtasks, queues and schedules](https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/)这篇chrome开发者的文章详细描述了`event loop`中的几种不同类型并提供了在线例子,强烈推荐详细阅读。 以下仅对上文做下简单介绍以及总结。 ### 任务类型 **简而言之,一个浏览器js主环境只可以有一个event loop,但是可以拥有多个任务队列。** 任务队列包含两种类型,microtask和macrotask。 ```js 1. microtask: process.nextTick(nodejs) > promise.then/MutationObserver 2. macrotask: script、setTimeout、setInterval、setImmediate、I/O、UI...

summarize
demo

# san的热更新思路&实现 前一篇文章简单介绍了webpack热更新的原理和踩坑,本文主要说说在san框架下的热更新实现过程。 默认webpack版本2.0+,已经安装了webpack-dev-server和webpack-hot-middleware。 ## 注意 本文实现针对的是san + san-router, 不包括san-store。 store实现热更新有两个思路,当store的actions被修改、连接的组件被修改时,或者store实例提供了类似reset的方法,或者store根据修改后的依赖重新实例化。 san-store的`connect.san`方法连接的store实例是san-store默认提供的,既没有提供保存状态、重新初始化的api,也没有重新实例化的机会。 这个`connect.san`方法提供了更便利的开发体验,使用另外的开发方式连接store也是可以做到热加载的,但这样就违背了热加载的初衷:提供更优秀的开发体验。 ## 懒人包 [github的san-hmr-template](https://github.com/jiangjiu/san-hmr-template) ## server端 server端分为两种,轻巧灵便的webpack-dev-server以及可以利用express强大生态的webpack-hot-middleware中间件。 ### webpack-dev-server 启用此功能实际上相当简单。 而我们要做的,就是更新 webpack-dev-server 的配置,和使用 webpack 内置的 HMR 插件。 ```js...

summarize
demo