cornerstone系列2 - 预加载和request pool(请求池)

先说说需求场景,由于界面上可以显示n*n(n最大4)布局区域的图像序列,每个序列可能有上百张图像,首先肯定是把每个序列的第一张图像加载出来,剩下的image就慢慢整,所以需要做一个预加载的策略。

理一下思路

首先需要一个请求池,放所有准备加载的图像,然后在操作过程中肯定会带来一些顺序的变动(比如对第四个序列滚动到了第20张图像,那肯定这张图像就最优先加载)所以需要有权重。检查可能会切换,所以需要重置请求池的方法。还需要可配置并发数量,因为某些影像会很大,就一张一张加载比较高效。原本获取image的地方,都是调用 loadAndCacheImage 方法,现在要统一管理所有请求,需要改成调用loadAndCacheImagePlus。最后由于还有个进度条的功能(预加载的进度条,每个序列的缩略图上显示),所以成功后需要有回调,也放在配置里。所以需要提供 捋一下大概:

阅读全文

cornerstone系列1 - cornerstoneTools的synchronize(同步化)

前言

由于工作接触影像项目,用到了cornerstone及其相关的库,网上感觉资料也挺少,于是用到啥记录啥吧。开始第一篇,cornerstoneTools的Synchronizer相关。

阅读全文

react-native热更新集成(使用CodePush)

终于要集成下rn的热更新了,这边挑选了微软的CodePush服务https://microsoft.github.io/code-push/

阅读全文

手写webpack打包基础实现

实现了最基础打包,源码可以查看https://github.com/huker/webpack-demo

  • 整体思路

阅读全文

webpack的css配置(模块化、抽离等)

模块化

方便控制局部和全局的样式,使用css-loader实现。

写的项目是个脚手架,这边是为了兼容,公司里很多前端项目都已经集成了这个脚手架,所以要适用styles.xxx这样的写法也要能直接className=”xxx”。重点在modules: ‘global’,默认全局,想用局部的地方自己加:local。

阅读全文

webpack4指南

基础篇

基础配置

首先安装依赖 npm install webpack webpack-cli -D

阅读全文

webpack2019笔记

webpack4的学习记录点,待知识点全部梳理一遍写一个webpack4的小册子

阅读全文

d3 - 学习笔记

又开一个试水坑啦~~学习记录走起

阅读全文

hexo遇到的问题

在deploy到git的时候遇到了报错.git没有找到

这个别看网上说的去 git init ,真的有毒,这样初始化git后会将整个hexo的工程都提交到git上(实际是要把public中的内容提交上去)
如果已经init了,那就把本地hexo项目中的.git文件夹删掉,然后重新hexo init一下。

阅读全文

ionic2+开发 持续更新中

目前已参与了3个(大概吧?)基于ionic的hybird app项目,记录下碰到的问题

阅读全文

ng2试水

水文,写个小项目来熟悉下ng2啵,过程碰到什么记什么~

阅读全文

angular学习-http

$httpProvider中的interceptor拦截器,$http的jsonp服务等http相关知识点

阅读全文

angualr表单验证

貌似新公司用的angular2,让我这种1都没啃好的渣渣肿么搞,就不更新那个angular知识点汇总了,一个个知识点铺开来记吧QAQ

从实例来记

阅读全文

websocket

以前客户端和服务器维持通信使用轮训、长轮训之类的,消耗资源,现在浏览器原生支持websocket,就是你了骚年。给毕设的作品加一个消息模块,学下用下。

阅读全文

高程3重读(ing...)

before

机会来的措手不及,但一番聊天后思考了很多。实习时候用多了jq,现在做毕设也用的框架,并且用框架的时候,也一部分只知道如何用,而没去究其原理,觉得自己一直认为重要的基础却被抛下了。这显得自己的简历中“重视基础”写的冠冕堂皇,于是重读高程3(其实以前没看多少,更喜欢读你不知道的js系列)。

希望这次经历后自己重拾初衷,端正作为一个工程师应有的态度,不能浮躁,毕竟理想是成为一名写一手好代码的人。

生疏点的记录

阅读全文

mongoose学习记录

before

node搭建的博客继续做下去当毕设了,半年前做的了,忘的七七八八,诶学了还是得好好记录。

连接

1
mongoose.connect('mongodb://127.0.0.1:27017/nodeBlog');

阅读全文

使用mocha进行单元测试

前言

公司的项目马上要上线了,中间层在写单元测试,手头没啥别的事儿就也看看这方面的知识,学习一下哈哈。

没弄过这些,选择框架的时候挑了个mocha,打算上手后再试试Jasmine。

这边记录一下学习的过程和知识点,记性不给力,这样以便以后回顾。

阅读全文

electron

安装

全局下安装

npm install electron-prebuilt -g

在自己想要的路径下

nam install electron-prebuilt –save-dev

安装完的文件中找到electron.exe,把自己写的文件拖进去就能运行了

基本结构

  • index.html
  • package.json
  • main.js ( 运行的入口 )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//main.js
const {app, BrowserWindow} = require('electron')
let win
function creatWindow(){
win = new BrowserWindow({
width:800,
height:600
})
win.loadURL(`file://${__dirname}/index.html`)
win.on('close',() => {
win = null
})
}
app.on('ready',creatWindow)
app.on('window-all-close',() => {
if(process.platform !== 'darwin'){
app.quit()
}
})
app.on('active',() => {
if(win === null){
createWindow()
}
})

阅读全文

mac安装本地nginx

刚换电脑,实在不适应mac的各种操作和配置习惯

记录下流程方便以后查阅

阅读全文

nginx学习记录

什么是nginx

  • 最主要最基础的功能是发布程序
  • nginx是高性能的HTTP和反向代理服务器,所以还可以实现负载均衡
  • 收发邮件

阅读全文

js学习笔记-原型

[[prototype]]

js中的对象都有一个内置的 [[Prototype]] 属性,其实就是对于其他对象的引用。

在访问对象属性,触发 [[Get]] 操作的时候,先在对象本身查找是否有这个属性,没有的话就顺着 [[Prototype]] 原型链查找下去,访问到顶端还没有的话返回undefined。

阅读全文

Git操作

1.创建仓库

$ git init

2.添加文件(-A全部提交)

$ git add -A

3.提交

$ git commit -m”name”

4.查看版本库状态(可以看哪些文件发生变化但是没添加的)

$ git status

阅读全文

angular学习阶段总结

angular的学习一直零零碎碎的,只会写基础。决心好好啃一下,把原理弄懂点,深入学一下。把脑子里记得起来的知识点罗列一下,方便回顾。

常用指令ng

  • ng-app 定义一个app,是angular的入口 定义了一个$rootScope,以此为根节点开始渲染dom
  • ng-init 初始化,可以初始化多个变量,用逗号分隔,赋值对象数组字符串数组都可以
  • ng-controller 定义一个控制器,产生了一个$scope
  • ng-model 绑定$scope上的值到html元素上,实现model和view的双向绑定
  • ng-repeat 迭代数组,后面加|可以带上过滤器,比如filter:query,query也是$scope上一个属性,改变query就能过滤筛选迭代的值
  • ng-class 动态自定义dom的class
  • ng-bing 绑定一个值,在angualr解析渲染完毕后才把数据显示出来,避免了数据闪跳的现象
  • ng-click 点击触发的事件
  • ng-show 布尔值 true是显示 反之隐藏,也可以写条件
  • ng-hide 和show相反
  • ng-if 和if的道理一样
  • ng-include 包含进来公共页面,可以ng-include=”‘header.html’”(里面要加上单引号,不然会认为是个变量,应该是个表达式)

阅读全文

nodeblog总结

已完成的功能:用户的注册登录,文章的发表删除修改评论,技术栈bootstrap+express+mogoose

新get的知识点

ejs

一种html模板的渲染方式

1
2
3
<%=title%> 渲染title这个变量
<%-title%> 渲染并执行title变量中的代码
<%- include b%> 会把b.ejs的内容传进去

在express生成的项目中,app.js里定义了视图的渲染方式,如果视图想写html代码的话,就改变渲染方式

1
2
3
app.set('view engine', 'html');
//对html文件 渲染的时候委托ejs渲染方式渲染
app.engine('html',require('ejs').renderFile);

阅读全文

聊聊float

前两天经历了我的第一次电话面试,正在动漫看的起劲=。=为了祭奠我的第一次失败的面试,就把拿问题写写吧

为什么我们会清除浮动

float最初创造出来,是为了产生word里面首字下沉或者说图片环绕的那种效果的,所以才会产生浮动后外面容器塌陷的问题。

阅读全文

js学习笔记-this

随着使用模式的复杂,显示传递会让代码越来越混乱,this可以将API设计的更加简洁易于复用。

误解-指向自身

举个例子说明this其实并不是我们所想的指向函数本身的

1
2
3
4
5
6
7
8
9
10
11
function foo(num){
console.log('foo:'+num);
this.count++;
}
foo.count=0;
for(var i=0;i<10;i++){
if(i<6){
foo(i);
}
}
console.log(foo.count); //0

阅读全文

js学习杂记-作用域闭包

怎样理解

一个函数记住并访问所在的词法作用域,即使函数在词法作用域之外执行,也能够访问涵盖的函数的内部作用域,这就形成了闭包。

1
2
3
4
5
6
7
function foo(a){
return function bar(){
console.log(a);
}
}
var bar=foo(2);
bar(); //2

无论经过多少标识符引用调用(将函数类型的值传递出去),bar()始终能涵盖foo()的内部作用域,所以在foo()词法作用域外部,也能访问变量a。
在定时器中也是如此

阅读全文

js学习杂记-函数作用域和块作用域

1.函数作用域

含义:属于这个函数的全部变量都可以在整个函数的范围内使用及复用
隐藏
遵循最小授权/最小暴露原则,将一些不需要曝露的函数、变量私有化,“隐藏”还能规避命名冲突。
规避冲突还可以全局命名空间、模块管理。

阅读全文

词法作用域

词法作用域就是在书写代码时产生的作用域,是由你将变量和块作用域写在哪里来决定的。

1
2
3
4
5
6
7
8
function foo (a) {
var b=a*2;
function bar(c){
console.log(a,b,c);
}
bar(b*3);
}
foo(2);//2,4,12

阅读全文

js学习杂记-作用域1

1
2
3
4
function foo(a){
console.log(a);
}
foo(2);

阅读全文