首页
学习
活动
专区
工具
TVP
发布

偏前端工程师的驿站

专栏作者
274
文章
344124
阅读量
58
订阅数
前端魔法堂——调用栈,异常实例中的宝藏
前言  在上一篇《前端魔法堂——异常不仅仅是try/catch》中我们描述出一副异常及如何捕获异常的画像,但仅仅如此而已。试想一下,我们穷尽一切捕获异常实例,然后仅仅为告诉用户,运维和开发人员页面报了一个哪个哪个类型的错误吗?答案是否定的。我们的目的是收集刚刚足够的现场证据,好让我们能马上重现问题,快速修复,提供更优质的用户体验。那么问题就落在“收集足够的现场证据”,那么我们又需要哪些现场证据呢?那就是异常信息,调用栈和栈帧局部状态。(异常信息我们已经获取了)  本文将围绕上调用栈和栈帧局部状态叙述,准开
^_^肥仔John
2018-01-18
1.2K0
Chrome Extension in CLJS —— 搭建开发环境
前言  磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件的ClojureScript开发环境。 具体工具栈:vim(paredit,tslime,vim-clojure-static,vim-fireplace) + leiningen(lein-cljsbuild,lein-doo,lein-ancient) + com.cemerick/piggieback 写得要爽  首先抛开将cljs编译为js、调试、测试和发布等问题,首先第一要务是写得爽~  cljs中最让人心烦的就是括号(),过去我想能否
^_^肥仔John
2018-01-18
2K0
编译期类型检查 in ClojureScript
前言  话说"动态类型一时爽,代码重构火葬场",虽然有很多不同的意见(请参考),但我们看到势头强劲的TypeScript和Flow.js,也能感知到静态类型在某程度上能帮助我们写出更健壮的代码(当然要基于充分的单元测试上啦)。  ClojureScript与JavaScript一样采取动态类型,但由于需要通过Google Closure Compiler编译后才能运行,因此我们可以如同JS那样借助GCC的注解来引入编译时类型检查,达到同样静态类型的效果。 配置项目设置 GCC的编译时类型检查仅当optim
^_^肥仔John
2018-01-18
9170
(cljs/run-at (JSVM. :all) "细说函数")
前言  作为一门函数式编程语言,深入了解函数的定义和使用自然是十分重要的事情,下面我们一起来学习吧! 3种基础定义方法 defn 定义语法 (defn name [params*] exprs*)
^_^肥仔John
2018-01-18
5400
JS魔法堂:深究JS异步编程模型
前言  上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出“这条粉肠到底在说啥?”的结果:(下面是PPT的讲义,具体的PPT和示例代码在https://github.com/fsjohnhuang/ppt/tree/master/apm_of_js上,有兴趣就上去看看吧! 重申主题  《异步编程模型》这个名称确实不太直观,其实今天我想和大家分享的就是上面的代码是如何演进成下面的代码而已。 a(function(){ b(function(){
^_^肥仔John
2018-01-18
1.4K0
(cljs/run-at (JSVM. :browser) "简单类型可不简单啊~")
前言  每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理啦。而数据类型又分为标量类型(Scalar)、结构类型(Struct)和集合类型(Collection),标题中的简单类型实质就是指标量类型。  cljs中内置的标量类型比js的丰富得多,一方面方便了操作,另一个方面增加了学习成本,因此从js转向cljs时可能会略感不适,下面我们一起来认识吧! 标量类型一览 ;; 空值/空集 nil ;; 字符串
^_^肥仔John
2018-01-18
6750
(cljs/run-at (->JSVM :browser) "语言基础")
前言  两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索。而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda.js来疗藉心中压抑已久的渴望,谁知一发不可收拾,于是抛弃所有利益的考虑,遵循内心,好好追逐cljs一番:D  cljs就是ClojureScript的缩写,就是让Clojure代码transpile为JavaScript代码然后运行在浏览器或其他JSVM上的技术。由于宿主环境的不同,因此只能与宿主环境无关的C
^_^肥仔John
2018-01-18
2.9K0
(cljs/run-at (JSVM. :browser) "搭建刚好可用的开发环境!")
前言  书接上一回,在了解cljs基本语法后并在clojurescript.net的奇特错误提示后,我们必须痛定思痛地搭建一个本地的开发环境,以便后续深入地学习cljs。 现有的构建工具  由于浏览器仅能运行JS,而无法直接运行cljs,因此我们需要搭建一个预编译环境将cljs编译成JS后再在浏览器中运行。预编译无非就是JVM和Nodejs两个环境,但具体使用时有如下几种构建工具。 直接JVM编译 Lein方案 Boot方案 Lumo方案 Shadow-cljs方案 cljs/tool方案  其中Lein
^_^肥仔John
2018-01-18
8550
打造高效前端工作环境-tmuxinator
前言  虽然tmux能让我们方便组织工作环境,但每次重新打开会话时都需要手动重新创建窗口、窗格和执行各种程序,能不能像VS那样以工程为单位保存窗口、窗格和各种所需执行的程序的信息呢?tmuxinator恰恰能解决我们这个需求! 安装与配置  安装gem $ sudo apt install gem $ gem sources --remove https://rubygems.org --add http://gems.ruby-china.org/  确保gem的源有且仅有http://gems.ruby
^_^肥仔John
2018-01-18
1.3K0
CSS魔法堂:说说Float那个被埋没的志向
前言  定位系统中第一难理解就是Normal flow,而第二就非Float莫属了,而Float难理解的原因有俩,1. 一开头我们就用错了;2. 它跟Normal flow靠得太近了。本文尝试理清Fl
^_^肥仔John
2018-01-18
7440
WebComponent魔法堂:深究Custom Element 之 面向痛点编程
前言  最近加入到新项目组负责前端技术预研和选型,一直偏向于以Polymer为代表的WebComponent技术线,于是查阅各类资料想说服老大向这方面靠,最后得到的结果是:"资料99%是英语无所谓,最重要是UI/UX上符合要求,技术的事你说了算。",于是我只好乖乖地去学UI/UX设计的事,木有设计师撑腰的前端是苦逼的:(嘈吐一地后,还是挤点时间总结一下WebComponent的内容吧,为以后作培训材料作点准备。 浮在水面上的痛 组件噪音太多了!  在使用Bootstrap的Modal组件时,我们不免要Ctr
^_^肥仔John
2018-01-18
8350
CSS魔法堂:小结一下Box Model与Positioning Scheme
前言  对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考。 《CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins》 《CSS魔法堂:你一定误解过的Normal flow》 《CSS魔法堂:Absolute Positioning就这个样》 《CSS魔法堂:说说Float那个被埋没的志向》  深入细节后会发现3中定位模式之间,Box Model和Positioning Schem
^_^肥仔John
2018-01-18
5910
CSS魔法堂:"那不是bug,是你不懂我!" by inline-block
前言  每当来个需要既要水平排版又要设置固定高宽时,我就会想起display:inline-block,还有为了支持IE5.5/6/7的hack*display:inline;*zoom:1;。然后发现盒子间无端端多了个不可选的空白符,于是想尽办法修复这个bug。 直到一天拜读了@一丝姐、@HAX等高人的秘笈后才顿悟,原来我错了。那不是bug,是我不懂而已。 先行者——IE5.5中的inline-block  当我们为支持IE5.5/6/7而添加这段hack时*display:inline;*zoom:1
^_^肥仔John
2018-01-18
7310
JS魔法堂:不完全国际化&本地化手册 之 拓展篇
前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化。熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已。趁着这个机会好好学习整理一下,为后面的技术选型做准备。  本篇作为系列的最后一篇,打算和大家一起看看HTTP的Content Negotiation机制和更多关于本地化的应用方向。 Content Negotiation(内容协同)  记得第一次接触国际化和本地化时是指服务端根据请求头字段Accept-Language获取languag
^_^肥仔John
2018-01-18
4810
JS魔法堂:不完全国际化&本地化手册 之 实战篇
前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化。熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已。趁着这个机会好好学习整理一下
^_^肥仔John
2018-01-18
1.5K0
(cljs/run-at (JSVM. :browser) "命名空间就这么简单")
前言  一个cljs文件定义一个命名空间,通过命名空间可以有效组织代码,这是构建大型系统必备的基础设施。本篇我们就深入理解cljs中的命名空间吧! 好习惯从"头"开始 每个cljs文件首行非注释的内容必定如下 (ns my-project.core) 而当前的cljs文件路径为${project_dir}/src/my_project/core.cljs,很明显命名空间与源码文件路径是一一对应的,对应规则是-对应_,.对应/咯~ 引入其他命名空间  要使用其他命名空间下的成员,那么必须先将其引入到当前命名空
^_^肥仔John
2018-01-18
7910
CSS魔法堂:Box-Shadow没那么简单啦:)
前言  说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事。 二话不说看效果 3D小球 <style type
^_^肥仔John
2018-01-18
1.2K0
CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
前言                                   盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是
^_^肥仔John
2018-01-18
1K0
.Net魔法堂:开启IIS的WebGarden、WebFarm和StateServer之旅
前言                                 公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被投诉系统慢,报表下载不了等问题。究其原因,原来NLB采用锁定sessionId转发请求,而IIS的最大工作进程数却是1而已,只能通过增加工作线程的方式来提高并发量,但增加线程会消耗更多内存,当所占内存接近2G时应用48%左右的执行时间被分配给GC工作了,也就是说负载增大时上述硬件配置并然卵。那解决方案明显如下:   1.
^_^肥仔John
2018-01-18
2K0
CSS魔法堂:深入理解line-height和vertical-align
前言 一直听说line-height是指两行文本的基线间的距离,然后又说行高等于行距,最近还听说有个叫行间距的家伙,@张鑫旭还说line-height和vertical-align基情四射,贵圈真乱啊。。。。。。于是通过本篇来一探究竟:) line-height到底有多height? 行距、行间距傻傻分不清  首先看看“有道词典”的解析! Leading = Line Space + Font Size(即是 行距 = 行间距 + 字体大小) Leading: 指相邻文本行间上一个文本行基线和下一文本行
^_^肥仔John
2018-01-18
1.7K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档