月度归档:2014年10月

屏幕快照 2014-10-20 11.05.49 AM

简易的5V电源转3.3V方法

在数字电路设计中,TTL电平(0/5V)和LVTTL电平(0/3.3V)的芯片经常共存于同一个系统中,此时如何对这些芯片选择合适的电压供电就成了一个大问题。统一5V是绝对不可能的。统一3V,芯片虽无烧毁的危险,但是某些娇贵的芯片,使用5VTTL电平,在3V情况下可能不工作,或者会发生逻辑错乱。因此,很多情况下,我们不得不分别设计5V电源线和3.3V的电源线,以满足不同的芯片工作。这种做法无疑增加了电源电路的复杂性,在对成本和版图面积要求很高的情况下是不可取的。

如果在使用两种电平的芯片数量都不是很多,而且芯片的供电电流不太大的情况下,可以采用一种简便的方法达到对两种芯片都良好供电。方法是电源线统一采用5V供电,5V芯片直接接电源,3.3V芯片在串接一红色发光二极管后连接电源即可。因为红色发光二极管正向导通管压降为1.8~2.2V,典型值为2V。这样经过发光二极管以后,进入芯片的实际电压只有3V左右,达到芯片要求,同时该发光二极管还可作为一种电源指示信号。

屏幕快照 2014-10-20 11.05.49 AM

注意:不能采用绿色发光二极管,因为管压降达到了3.0—3.2V。

在大电流情况下,也不能使用这种方法,一般发光二极管的电流承受能力都不强。

在对电路稳定性和寿命要求较高的电路不使用,因为普通发光二极管寿命通常为两万小时,且易损换。

在USB器件设计中是一个很好的解决方案,不但能将5V转为3.3V,而且还能提供电源指示。

HTML 4.01 符号实体速查

本字符实体参考手册包括了数学符号、希腊字符、各种箭头记号、科技符号以及形状。

注释:实体名称对大小写敏感。

HTML 支持的数学符号

结果 描述 实体名称 实体编号
for all ∀ ∀
part ∂ ∂
exists &exists; ∃
empty ∅ ∅
nabla ∇ ∇
isin ∈ ∈
notin ∉ ∉
ni ∋ ∋
prod ∏ ∏
sum ∑ ∑
minus − −
lowast ∗ ∗
square root √ √
proportional to ∝ ∝
infinity ∞ ∞
angle ∠ ∠
and ∧ ∧
or ∨ ∨
cap ∩ ∩
cup ∪ ∪
integral ∫ ∫
therefore ∴ ∴
simular to ∼ ∼
approximately equal ≅ ≅
almost equal ≈ ≈
not equal ≠ ≠
equivalent ≡ ≡
less or equal ≤ ≤
greater or equal ≥ ≥
subset of ⊂ ⊂
superset of ⊃ ⊃
not subset of ⊄ ⊄
subset or equal ⊆ ⊆
superset or equal ⊇ ⊇
circled plus ⊕ ⊕
cirled times ⊗ ⊗
perpendicular ⊥ ⊥
dot operator ⋅ ⋅

HTML 支持的希腊字母

结果 描述 实体名称 实体编号
Α Alpha Α Α
Β Beta Β Β
Γ Gamma Γ Γ
Δ Delta Δ Δ
Ε Epsilon Ε Ε
Ζ Zeta Ζ Ζ
Η Eta Η Η
Θ Theta Θ Θ
Ι Iota Ι Ι
Κ Kappa Κ Κ
Λ Lambda Λ Λ
Μ Mu Μ Μ
Ν Nu Ν Ν
Ξ Xi Ξ Ξ
Ο Omicron Ο Ο
Π Pi Π Π
Ρ Rho Ρ Ρ
Sigmaf undefined
Σ Sigma Σ Σ
Τ Tau Τ Τ
Υ Upsilon Υ Υ
Φ Phi Φ Φ
Χ Chi Χ Χ
Ψ Psi Ψ Ψ
Ω Omega Ω Ω
α alpha α α
β beta β β
γ gamma γ γ
δ delta δ δ
ε epsilon ε ε
ζ zeta ζ ζ
η eta η η
θ theta θ θ
ι iota ι ι
κ kappa κ κ
λ lambda λ Λ
μ mu μ μ
ν nu ν Ν
ξ xi ξ ξ
ο omicron ο ο
π pi π π
ρ rho ρ ρ
ς sigmaf ς ς
σ sigma σ σ
τ tau τ τ
υ upsilon υ υ
φ phi φ φ
χ chi χ χ
ψ psi ψ ψ
ω omega ω ω
ϑ theta symbol ϑ ϑ
ϒ upsilon symbol ϒ ϒ
ϖ pi symbol ϖ ϖ

HTML 支持的其他实体

结果 描述 实体名称 实体编号
Œ capital ligature OE Œ Œ
œ small ligature oe œ œ
Š capital S with caron Š Š
š small S with caron š š
Ÿ capital Y with diaeres Ÿ Ÿ
ƒ f with hook ƒ ƒ
ˆ modifier letter circumflex accent ˆ ˆ
˜ small tilde ˜ ˜
en space    
em space    
thin space    
zero width non-joiner ‌ ‌
zero width joiner ‍ ‍
left-to-right mark ‎ ‎
right-to-left mark ‏ ‏
en dash – –
em dash — —
left single quotation mark ‘ ‘
right single quotation mark ’ ’
single low-9 quotation mark ‚ ‚
left double quotation mark “ “
right double quotation mark ” ”
double low-9 quotation mark „ „
dagger † †
double dagger ‡ ‡
bullet • •
horizontal ellipsis … …
per mille ‰ ‰
minutes ′ ′
seconds ″ ″
single left angle quotation ‹ ‹
single right angle quotation › ›
overline ‾ ‾
euro € €
trademark ™ ™
left arrow ← ←
up arrow ↑ ↑
right arrow → →
down arrow ↓ ↓
left right arrow ↔ ↔
carriage return arrow ↵ ↵
left ceiling ⌈ ⌈
right ceiling ⌉ ⌉
left floor ⌊ ⌊
right floor ⌋ ⌋
lozenge ◊ ◊
spade ♠ ♠
club ♣ ♣
heart ♥ ♥
diamond ♦ ♦

HTML URL 编码

下面是用 URL 编码形式表示的 ASCII 字符(十六进制格式)。

十六进制格式用于在浏览器和插件中显示非标准的字母和字符。

URL 编码 – 从 %00 到 %8f

ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode
æ %00 0 %30 ` %60
%01 1 %31 a %61
%02 2 %32 b %62
%03 3 %33 c %63
%04 4 %34 d %64
%05 5 %35 e %65
%06 6 %36 f %66
%07 7 %37 g %67
backspace %08 8 %38 h %68
tab %09 9 %39 i %69
linefeed %0a : %3a j %6a
%0b ; %3b k %6b
%0c < %3c l %6c
c return %0d = %3d m %6d
%0e > %3e n %6e
%0f ? %3f o %6f
%10 @ %40 p %70
%11 A %41 q %71
%12 B %42 r %72
%13 C %43 s %73
%14 D %44 t %74
%15 E %45 u %75
%16 F %46 v %76
%17 G %47 w %77
%18 H %48 x %78
%19 I %49 y %79
%1a J %4a z %7a
%1b K %4b { %7b
%1c L %4c | %7c
%1d M %4d } %7d
%1e N %4e ~ %7e
%1f O %4f %7f
space %20 P %50 %80
! %21 Q %51 %81
%22 R %52 %82
# %23 S %53 ƒ %83
$ %24 T %54 %84
% %25 U %55 %85
& %26 V %56 %86
%27 W %57 %87
( %28 X %58 ˆ %88
) %29 Y %59 %89
* %2a Z %5a Š %8a
+ %2b [ %5b %8b
, %2c \ %5c Π%8c
- %2d ] %5d %8d
. %2e ^ %5e Ž %8e
/ %2f _ %5f %8f

URL 编码 – 从 %90 到 %ff

ASCII Value URL-encode ASCII Value URL-encode ASCII Value URL-encode
%90 À %c0 ð %f0
%91 Á %c1 ñ %f1
%92 Â %c2 ò %f2
%93 Ã %c3 ó %f3
%94 Ä %c4 ô %f4
%95 Å %c5 õ %f5
%96 Æ %c6 ö %f6
%97 Ç %c7 ÷ %f7
˜ %98 È %c8 ø %f8
%99 É %c9 ù %f9
š %9a Ê %ca ú %fa
%9b Ë %cb û %fb
œ %9c Ì %cc ü %fc
%9d Í %cd ý %fd
ž %9e Î %ce þ %fe
Ÿ %9f Ï %cf ÿ %ff
%a0 Ð %d0
¡ %a1 Ñ %d1
¢ %a2 Ò %d2
£ %a3 Ó %d3
%a4 Ô %d4
¥ %a5 Õ %d5
| %a6 Ö %d6
§ %a7 %d7
¨ %a8 Ø %d8
© %a9 Ù %d9
ª %aa Ú %da
« %ab Û %db
¬ %ac Ü %dc
¯ %ad Ý %dd
® %ae Þ %de
¯ %af ß %df
° %b0 à %e0
± %b1 á %e1
² %b2 â %e2
³ %b3 ã %e3
´ %b4 ä %e4
µ %b5 å %e5
%b6 æ %e6
· %b7 ç %e7
¸ %b8 è %e8
¹ %b9 é %e9
º %ba ê %ea
» %bb ë %eb
¼ %bc ì %ec
½ %bd í %ed
¾ %be î %ee
¿ %bf ï %ef

Web Components是什么?

Web Components 的现状

到目前为止,w3c定义的web components已经包含了

  • Templates, 提供一个包含html,css,js的代码片段,类似于一般模板引擎里的视图
  • Custom Elements, 提供一个自定义html元素的接口,支持对现有html元素的扩展
  • Imports, 提供对模板或者自定义元素这些资源的加载支持
  • Shadow DOM, 提供一个对外隐藏的web片段,而且支持独立的样式,不会破坏文档内的样式

web 组件的技术规范的制定就是为了保证前端组件的规范化,独立性,可重用性.先来说说Templates功能


Templates

Templates提供了类似于模板引擎里的视图功能,默认浏览器是不会渲染此标签的内容的,只有当你真正用的时候才会去render,下面给一个简单的使用Templates的例子


<template id="foo">
    <h2>Hello, world!</h2>
</template>

跟普通的html标签一样,定义一个id来标识这段代码,下面我们来使用这个模板


var template = document.querySelector('#foo');
document.querySelector('body').appendChild(template.content.cloneNode(true));

上面的代码就是往body里插入模板里的内容,这里要注意下,想要获取模板内的内容,得使用模板元素的content属性,内容的类型是documentFragment,一般在同时插入多个html内容的时候,用documentFragment是最有效率的, 这里还要注意下,假如直接把content的内容插入到目标元素内之后,模板的内容就会丢失,所以为了保证别的目标元素也想插入这个模板的话,可以使用NodecloneNode方法,这是所有html节点都有的方法,参数传递true的话会深度clone.

Custom Elements

自定义元素api接口提供了一个可以自定义html元素的方法,支持新增方法以及对现有的元素进行扩展

w3c提供了document.registerElement方法来创建一个新元素,先来一个简单的实例,然后再分析它的实现

var p = Object.create(HTMLElement.prototype);
p.hello = function () {
    this.appendChild("<h1>hello feenan</h1>");
}
var HelloFeenan = document.registerElement('hello-feenan', {prototype: p});

上面的代码创建一个名叫hello-feenan的元素,自定义的元素必须以-来连接,Object.create传递一个原型,将会创建继承这个原型的对象,然后对这个原型进行方法扩展,这里加了一个hello方法,定义完这个元素之后,怎么使用呢,其实它跟系统自带的元素一样,可以直接在html页里使用也可以动态的添加,这里使用document.createElement方法来添加,然后动态的添加body元素中

var el = document.createElement('hello-feenan');

document.querySelector('body').appendChild(el);

// 调用hello方法来添加子元素
document.querySelector('hello-feenan').hello();

上面的代码就是应用自定义元素的好例子,其实这里的hello方法的内容可以在自定义元素的初始化事件回调里执行,说到这里,就得提提customer element 的支持的事件了

  • createdCallback 自定义元素创建实例的时候触发
  • attachedCallback 当元素实例被添加到document文档流中时触发
  • detachedCallback 当从document文档流中删除自定义的元素实例时触发
  • attributeChangedCallback 当元素实例的属性修改的时候触发

这四个事件的回调函数必须定义在自定义元素的原型对象上面,比如上面的p,可以通过createdCallback事件来实现上面的hello方法的内容

p.createdCallback = function(){
    this.appendChild("<h1>hello feenan</h1>");
}

下面是一个完整的带自定义元素实现的例子

<html>
    <head>
        <title>customer elements</title>
        <meta charset="utf-8">
    </head>
    <body>
        <script>

            var helloFeenan = Object.create(HTMLElement.prototype);

            helloFeenan.hello = function(){
                this.appendChild("<h1>hello feenan</h1>");
            }

            // 当元素被创建的时候触发此回调函数
            helloFeenan.createdCallback = function(){
                this.appendChild("<h1>hello feenan</h1>");
            }
            document.registerElement('hello-feenan', { prototype: helloFeenan});

            var el = document.createElement('hello-feenan');

            document.querySelector('body').appendChild(el);


        </script>
    </body>
</html>

Imports

imports特性提供了以link方式来导入一段html文本的功能,相当于是template的进化版,方便做成模板文件

w3c规定linkrel属性传入import值,然后设置src为一个html文件,像下面这样的


<link rel="import" href="import.html">

那么在引入页面的dom里怎么获取导入的文件内容呢,w3crel=import的元素提供了import属性来获取文件内容,本质上是#document类型,可以像下面这样来获取内容


var link = $('link[rel=import]')[0];

var link_doc = link.import;

Shadow DOM

shadow dom根据字面意思就知道这是隐藏在dom节点里的元素,提供了对css,js,html的封装从而形成一个独立组件的功能,这是一个非常不错的特性,结合import可以实现一个可重用的Web组件功能替代现在的一些ui组件.

下面我们来看看怎么使用shadow dom

w3c提供了createShadowRoot方法,这属于element的方法,在元素上面调用这个方法将在它下面创建shadow dom子元素,可以像下面这样来使用


var shadowroot = $('.content')[0].createShadowRoot();
var elm = document.createElement('h1');
elm.textConent = 'hello feenan';
shadowroot.appendChild(elm);

一个完整的例子

目前chrome 36 已对template, import, shadow dom提供了完整的支持,所以下面提供一个结合三者的例子

  • link元素需要引入的import.html文件

<style>
    .content{
        margin: 20px;padding: 15px;
        width: 200px;height: 200px;
        border: 1px solid #ccc;border-radius: 5px;
        box-shadow: 0 0 10px red;
        overflow: auto;
    }
</style>
<div class="content">
    <h2>this is a test for ShadowRoot</h2>
</div>

上面的文件,chrome在用link引入之后,样式文件会放在link.importdocument里的head元素内,普通html元素会放入body中,知道了内容的位置,方便下面用的时候查找

  • index.html 运行例子的主html文件

<!doctype html>
<html>
<head>
    <title>web components</title>
    <meta charset='utf8'>
    <link rel="import" href="import.html">
    <style>
        .content{
            margin: 20px;padding: 15px;
            width: 300px;height: 400px;
            border: 1px solid #ccc;border-radius: 5px;
            box-shadow: 0 0 10px #009933 inset;
            overflow: auto;
        }
        .btn{
            width: 120px;line-height: 30px;
            font-size: 16px;
            text-align: center;
            padding: 10px 15px;
            border-radius: 5px;
            border: 1px solid #ccc;
            box-shadow: 0 0 5px #ddd;
        }
        .btn:focus{
            outline: none;
            box-shadow: 0 0 10px green;
        }
    </style>
</head>
<body>
    <div class="content">
    </div>
    <p class="tmpl"></p>
    <p>
        <button class="btn add">添加</button>
    </p>
    <template id="tmpl1">
        <h1>hello feenan!</h1>
    </template>
    <script src="/lib/jquery/dist/jquery.min.js"></script>
    <script>
        $('.add').click(function(){

            var link = $('link[rel=import]')[0];

            // 获取引入文件的模板内容,返回的其实是#document类型
            var link_doc = link.import;

            // 创建shadow dom 元素,本质是一个documetn片段元素
            var shadowroot = $('.content')[0].createShadowRoot();

            // 创建样式
            var style = function(){
                var css = document.createElement('style');
                // 通过styleSheets获取模板内的样式内容
                css.textContent = link_doc.styleSheets[0].rules[0].cssText;
                return css;
            }

            // 创建内容
            var body = function(){
                return $(link_doc.body.innerHTML)[0];
            }

            shadowroot.appendChild(style());
            shadowroot.appendChild(body());
            $('.content').append($(link_doc).find('body').html());

            // 使用template来获取模板文件
            $('.content').append($('#tmpl1')[0].content.cloneNode(true));

        });
    </script>
</body>
</html>
  • 以上的例子建议在chrome 36里运行

总结

非常高兴chrome36稳定版已对template,import,customer element,shadow dom提供了完整的支持,更多关于各个浏览器对web components支持请

关于web components相关的网站,可以参考下面的地址,大部分都要翻墙浏览,因为基本上都是google维护的

webcomponents 官网

Polymer 框架, google出品的开发web组件的框架,兼容大部分浏览器

w3c web 组件规范

@font-face优化处理办法

下面的语法是你如何使用@ font-face的。首先,定义新的字体所提供的名称和说明的字体。

@font-face {
    font-family: DeliciousRoman;
    src: url('http://www.font-face.com/fonts/delicious/Delicious-Roman.otf');
}

然后你引用它。

p {
    font-family: DeliciousRoman, Helvetica, Arial, sans-serif;
}

就是这样。

在前面的例子中使用外部来源。但是,如果将字体文件是在您的服务器上,那么你可以参考以下的方式:

@font-face {
    font-family: DeliciousRoman;
    src: url('…/Delicious-Roman.otf');
}

此外,还有其他三个字体属性,您应该知道的。首先是font-stretch,您可以设定的字体会被拉伸,“normal’”是默认的。此外,有字体的风格,让你的字体是斜或斜体。最后,还有字体的重量,最后字体为粗体,等你可以自己设置.

用以上方法,可能导致浏览器假死。所以可以采用下面的方式,用js进行优化。

1 function lazyload() {
2 var sRule1 =
3 @font-face { +
4 font-family: ‘Yanone'; +
5 src: url(‘/bin/resource.cgi?type=font&sleep=6′); +
6 src: local(‘Yanone’), +
7 url(‘/bin/resource.cgi?type=font&sleep=6′) +
8 format(‘truetype’); +
9 };
10
11 var style1 = document.styleSheets[0];
12 if ( function === typeof(style1.insertRule) ) {
13 // Firefox, Safari, Chrome
14 style1.insertRule(sRule1, 0);
15 }
16 else if ( string === typeof(style1.cssText) ) {
17 // IE
18 style1.cssText = sRule1;
19 }
20 }

 

 

  • 只在你确定你非常需要 @font-face的时候才使用他
  • 将你的@font-face定义在所有的SCRIPT标签前
  • 如果你有许多字体文件,考虑将它们分散到几个域名下。
  • 不要包含没有使用的 @font-face声明——IE将不分它使用与否,通通加载
  • Gzip字体文件,同时给它们一个未来的过期头部声明
  • 考虑字体文件的后加载,起码对于IE。

 

谷歌字体

谷歌字体是谷歌的API,你必须选择在您的网站中使用的字体的集合。所有的字体都是免费的,开放源码的。他们的选择是相当大的,包括许多伟大的字体。此外,您还可以自由选择你喜欢的。一旦你选择了你的字体,你给出的代码片段,将其粘贴到您的网站。谷歌允许您选择不同的代码,如将CSS导入到您的<head>标签。

谷歌字体

当谈到谷歌的字体,那肯定是一个易于使用的服务。有一件事是你要知道的:它会告诉你你所选择的字体对您的网站的加载时间的负载。

1248060046736210271

大连金州东沟小黑山旅游攻略

东沟、小黑山位于金州石河街道东沟村(现在应该属于普兰店海湾新区)。这里山清水秀,自然、人文景观有机地融合在一起,是郊县游的好去处。

QQ浏览器截图_20141001191345_2650AE87849A4a68BA50F85BD51ADE54

沈大高速石河下道后路线

QQ浏览器截图_20141001191531_210CEFC237444e50BAA6D43AE5EAD040

702843016848163525 1175720977721622972 1248060046736210271 2632072507222417071

东沟村的满族风情一条街有农家五坊(即油坊、酒坊、粉坊、磨坊、豆腐坊)、卖场、民俗展厅等特色景观。

海拔469米的小黑山是东沟旅游区重要的景观,山路崎岖陡峭,山顶风光秀美,四五月间野杜鹃盛开,红遍山野。临近主峰,有一小庙藏于山崖之下,真可谓深山古寺。据传小庙建于明代,以道教为主题。现经修缮,改为佛寺了。

小黑山北面有九莲山与之相对。九莲山又名“九顶莲花山”,整座山连绵起伏,共有九座山峰,从远处看像九朵莲花。九莲山下,一处古寺如世外隐者斜倚山前,这就是九莲古寺,相传始建于唐代。

除了这些之外,还有省级文物保护单位明代烽火台、石河街道的水源地东沟水库和邓家沟水库、中国书法家协会大连创作中心等景观,山水相依,环境优美。

在领略秀美独特的山水之余,还可到农家院品尝可口美味的农家饭菜。

驾车走沈海高速,石河下道。下道后第一个路口右转前行到达。也可直接走202国道,在石河路口右转前行。

24733206203576653783142386639999990115