Flutter

Flutter中的状态管理

Flutter作为出自Google的一个跨平台(iOS,Android)应用开发方案。布局方式上和React或者说React Native非常相似——组件(Widget)化。写起来非常的高效,却有着React Native所不具有的优势: 一套代码到处运行,原生渲染,原生调用,不需要像RN需要桥接。 前端应用除去布局部分,就属状态管理最复杂难搞了。官方文档中只是提及了最基础的部分,因此本文中着重讨论这部分。 下面基本上转述自Google I/O '18上视频Build reactive mobile apps with Flutter,内容较水,推荐大家看视频就够了😄 setSate 是的你没看错,

Swift

【译】Swift Delegation

Delegation委托是Apple iOS开发中很常见的一种模式,不过在之前开发Hipo中更多算是照猫画虎,这次来一篇Apple iBooks中《The Swift Programming Language ( Swift 4.2 beta)》中Protocol -- Delegation的译文。 委托(Delegation)是一种设计模式,能够让类或者结构体将自己一部分责任移交(或者称之为委托delegate)给另一个类型实例。该设计模式首先定义一个协议(protocol)描述被委托的责任,然后由受托者保证委托功能的实现。委托设计模式能够用来响应特定的动作或者从其他来源接受数据而不需要知道对方的类型。 下面例子为骰子积分榜类游戏定义了两个协议 protocol DiceGame { var dice: Dice

Swift

Swift macOS开发与Core Data,CloudKit开篇

坚持总是最难的,立了很多flag,最终却仍是什么都没有做成。 喏,这不,又是一个flag。 喜欢将自己称之为创造者,也很庆幸能用自己的既能创造点东西出来,花花世界可爱的技术太多了,就连单单写个App就有着各种要花缭乱的法子,webview的,混合的,原生的……,谁不想用最小的力气写出最好的作品呢。 迷失了自己。 选一条hard way吧。 系列文章可能包含什么? Swift语言相关,工作中使用Typescript, React,RxJs,越来喜欢强类型语言,Swift作为一种现代的,安全的,强类型语言,值得再复习它的的语法。 可能会GitHub开源一个横跨,iOS,iPad,macOS 使用Core Data本地存储数据,

电影

《妖猫传》《三块广告牌》和产品

毫无疑问,我是不喜欢《妖猫传》的,塑料感的大唐盛世,配合形如秦昊所演人物般猥琐的剧情。这就是我对《妖猫传》的所有感受。 无心插柳,之后看了《三块广告牌》这个电影,摄影不美,主演不美,至于绝对精彩的女主,更加……放张图片你们感受下 甚至所讲的故事,也不美,不是你们赞美的“玉环之后,再无盛唐”,更不是什么人猫绝世爱恋故事…… 但是我超爱这个故事,更改爱这样讲故事,就爱这种长在生活中温突突黑色幽默。 一直很喜欢做一些“东西”,也就是俗称的产品吧,但是回顾2017年,无论个人还是工作中,的的确确失败的一年,

电影

银翼杀手

很是喜欢科幻类的东西,很是喜欢《银翼杀手》这两部电影。 看第一部《银翼杀手》还是在2011年,迷茫焦灼的大学时代,时光荏苒,至今看第二部已然是7年后了,依然迷茫与焦灼。 很爱这种,橘红色迷雾笼罩,极简而又极权,极宗教,中西混杂的建筑群体。拥挤而又孤寂的人群中,最具人情味的是一个人人可以买到的AI产品…… 仿生人会梦见电子羊吗?没有灵魂的复制人可以做出最有人性的牺牲,或许这才是人类成神的时代。

热爱你所热爱的

AirPods终于到手了,密集用了一天,AirPods确实给了我等待6周的惊喜,简单,可信赖,这就是蓝牙耳机该有的样子呀。 产品不就应该是这个样子吗?诸多的纠结不就是为了这个直白的目的吗? 越简单越不易,没日没夜的忙碌,似乎忘却了自我。 喘息,有节奏的喘息才能有力量。 热爱我的热爱。 2017.8.25 买之前诸多评测说是没有按键来调节音量,不免心有疑虑,用到现在才发现,为什么要有音量调节呢?有了这个才是泯然众人矣。 用到现在更加喜欢AirPods了。

WebAssembly

[译]简编漫画介绍WebAssembly

最近浮躁了不少,来篇翻译静一下心~~ 翻译自:An Abridged Cartoon Introduction To WebAssembly ---译文--- 最近前端圈中有很多对WebAssembly的不实宣传。大家都在谈论WebAssembly又如何之快,以及如何如何去革新web开发。但大都没有深入它为什么快的细节,在本文中,我将帮助你理解WebAssembly为什么快。 但是首先,什么是WebAssembly?WebAssembly是一种能够让浏览器中运行其他编程语言(除JavaScript)的的方式。 当你谈论WebAssembly时候会免不了和JavaScript比较。我在这里我没有暗示这是一个二选一的方案——你或者使用WebAssembly或者使用JavaScript。实际上,我们希望开发者能够在同一应用中混合着使用两者。不过和JavaScript的比较是有必要的,这样就能够理解WebAssembly潜在的影响 。 关于性能的一点小历史 JavaScript在1995年被创造出来,它的设计初衷并不是为了快,而且在头十年,它却是不快。

最是深情

一早上,妈妈电话我,说外公病重让我给她买回家的票。过了一会奶奶又给我电话,开口就是你别怕,你外公走了,没敢给你妈妈说…… 窒息般地伤心。外公走了,过年还是好好的呀,奶奶说,我外公想外婆,想不开,去了。 外婆前年冬天过世的,因为肺部有病,有天劳累过度,吐了血就走了,外公不住的念叨,“还能醒过来不,还能醒过来不”,外公是村里之前少有的读书人,吃饭挑,只有外婆能照顾的妥当,外婆一走,外公身体就开始不好,也不怎么好好吃饭,一直说想我的外婆,想效仿我的大爷爷。 说到这里又是另一个故事,我08年高中毕业,大奶奶过世,大爷爷开始不吃饭,

Hipo

Hipo的一点想法和计划

Hipo做到现在都做了2年了,几次App Store首页推荐,一直维持在中国区财务付费榜前100,不算什么成就,最近刚刚免费发布了Mac、Web版本。 个人开发App十之八九都不会大卖,为啥不按照纯粹一点的方式来开发,实现自己的想法,吃自己的狗粮不就已经是最大的开心了么 发布之后最好能有个常规的跟新,这样多少能够挽留下用户的流失,每天Hipo统计中下跌的数字都在提醒着我的懒惰😄。 less is more ? Hipo的设计和交互按照一些时髦的想法做的很是精简,所有的操作两步之内搞定,但是用户很是无感,甚至抱怨功能太少,现在也在考虑按照更直白,熟知的方式来重新设计 不再憋大版本,做到常规的周期更新,这点算是对个人开发者,最大的挑战~~

AngularJS

AngularJS 1 教程

为什么需要前端框架 随着浏览器性能提升,更多Web Page演变为Web App,特别是在中大型的项目中,就需要一个 前端框架 来: 解耦应用的逻辑,数据模型,和界面视图 更加方便的多人协作 基本组件的抽离复用 相对低成本的性能保证 方便测试 …… 为什么2016年的今天仍然可以学习Angular 1 眼下潮流的框架太过于现代,入门门槛过高,学习React,Vue 2,Angular 2,需要首先学习npm、webpack、jsx、ES6、甚至Typescript。而且变化非常快,一些需要写前端的后端人员可能力不从心😂 而学习AngularJS

Hipo

Hipo Desktop 免费发布

Hipo iOS最后一次更新是在16年5月2号。 之后iPhone 7发布了,iOS 10发布了。 5个月后Hipo Desktop终于发布。 免费,免费,免费!!! 全新设计了桌面端的UI,针对桌面端大屏幕优化,采用了最新的设计风格(airbnb风格) 左侧时间导航 中间部分时间趋势统计,分类预算统计。 右侧具体的记录列表。 全桌面,支持Web(支持Mac,Windows,iOS,Android,推荐chrome浏览器访问)。 数据云同步,全平台,全免费同步(背后依托CloudKit,数据只有用户可见,相当安全) 支持多用户,

Electron

解决CloudKit在Electron中无法登录的问题

最近CloudKit Web端授权页面更新后中使用了CMD模块化的东西,因此会检查require是否存在,本意是存在的话就会按照CMD的方式加载js模块,但是Electron中默认通过require来加载electron模块或者npm模块,这样问题就来了,Electron中的Cloudkit授权页面就会报错! 解决方案也简单,如果你的页面中不需要使用electron提供的node能力,自然解决方案就是启动主窗口时候禁用node能力即可,这样通过window.open()之后的窗口也会禁用。 //在mian.js中 const BrowserWindow = electron.BrowserWindow mainWindow = new BrowserWindow({ width: 1200, height: 800, webPreferences: { nodeIntegration: true//这里配置禁用node使用 } }) 当然一般情况下还是需要使用electron所提供的node能力,这样就不能在main.js中禁用全部窗口的node能力,

nodeJs

升级Ghost到0.9.0

之前blog所使用的是0.5.7的Ghost,最近又时间就顺手升级了下。 根据官方文档先升级到了0.7.1版本。 本来想先在本地测试的,结果估计是Mac node版本过高无法成功安装所需的node模块,一咬牙直接服务端升级,居然成功了,此刻就是ghost 0.7.1版本。 随后在0.7.1版本上升级到了最新版本(写此文时是0.9.0)。 值得注意的是替换完文件,npm install --production之后最好来一次nam start --production这个时候Ghost会做些版本升级。 七牛插件 还是使用了之前0.5.7版的七牛插件: nam

Hipo

Electron打包以及使用CloudKit做自动更新服务

Build cross platform desktop apps with JavaScript, HTML, and CSS 现在电脑升级, Electron 算是一种不错的跨平台解决方案,Hipo使用CloudKit做同步服务,Cloudkit支持js,以及server to server调用,因此决定使用electron开发桌面端。开发过程不必多说,多是前端代码的编写加一些平台API的调用。 Electron打包 Electron代码编写之后便是打包, 官网 介绍了几种方法,用了 electron-packager 主要就是两个命令: 安装electron-packager # for use in npm