记录JavaScript中创建对象的几种方法。
工厂模式
工厂模式是一种设计模式,抽象创建具体对象的过程,用函数来封装特定接口并创建对象的细节。
实例:
1 | /* 工厂模式 */ |
优点:
解决创建多个相似对象。
缺点:
没有解决对象识别的问题。
记录JavaScript中创建对象的几种方法。
工厂模式是一种设计模式,抽象创建具体对象的过程,用函数来封装特定接口并创建对象的细节。
实例:
1 | /* 工厂模式 */ |
优点:
解决创建多个相似对象。
缺点:
没有解决对象识别的问题。
近期搭建一个Wordpress站点,前期的准备工作完成,登录界面登录成功后,
显示的页面为403,禁止访问。
在网上搜索后,发现问题在于权限的问题,主要是页面文件所在的文件夹的访问
权限。由于nginx默认使用的用户权限无法访问页面的文件,导致报的403。
解决方法:
1、打开nginx.conf文件修改启动用户
1 | $ vim /user/local/nginx/conf/nginx.conf |
修改开头的用户,
#user nobody
改为
user nginx web;
或者其他用户,格式为用户[空格]用户组
2、重新启动nginx
1 | $ /user/local/nginx/sbin/nginx -s reload |
此时,重新测试,应该就可以访问成功了。
配置密钥可使用户免密ssh方式登录服务器。
配置方法:
1 | $ ssh-keygen |
此处可选择生成密钥的文件路径,默认为~/.ssh/id_rsa
密码为可选。
1 | $ ssh-copy-id -i ~/.ssh/id_rsa.pub xxx@host |
手动拷贝id_rsa.pub到服务器上,并收到添加认证文件。
1 | $ cat id_rsa.pub >> ~/.ssh/authorized_keys |
配置服务器上/etc/ssh/sshd_config文件,修改以下配置项
1 | RSAAuthentication yes |
修改后,重启sshd服务,根据不同的系统使用相应命令
直接登录
1 | $ ssh user@host |
如果配置成功,则不需要密码直接登录。
主要原因在于服务器上认证文件及所在目录的权限问题
详情排查步骤可查看文章配置ssh公钥登录提示还是输入密码
解决方法:
1 | $ chmod 755 ~/home/xxxuser |
说明:
查找命令的路径
说明:
updatedb用于更新索引数据库
说明:
find -name “query”
find -iname “query”
find -not -name “query”
find ! -name “query”
find -type type_descriptor query
f: regular file
d: directory
I: symbolic link
c: character devices
b: block devices
find / -type c
find / -type f -name “*.conf”
c: bytes
k: Kilobytes
M: Megabytes
G: Gigabytes
b: 512-byte blocks
find / -size 50c
find / -size -50c
find / -size +700M
Access Time: 上一次读写时间
Modification Time: 上一次文件内容修改的时间
Change Time: 上一次节点元数据修改时间
find / -mtime 1
find / -atime -1
find / -ctime +3
年初的时候,也就是刚过完年,准备弄个电动自行车(后续简称为电动车),方便平时的生活,主要是周末进行买菜以及附近的办事。
购买之后,使用了将近2个多月的时间,心得体会是,生活的半径确实扩大了,有一些地铁和公交不方便达到的地方,有时候想去也会去看看了。虽然电动车的行程没有汽车的覆盖范围广,但是两者的功能职责是不同的,汽车的购买也在计划中了。
这里就列举下购买电动车的一些心得:
这里的定位,主要是你想购买的电动车的用途、重量、续航。
所谓的用途,有点类似你的目标,你想要电动车做什么事。比如说上下班通勤、周末买菜、运送小件货物等等。
重量和续航,会影响到后续的使用,锂电池和铅酸电池的电动车重量不一样,另外,不同的车架重量也不一样。
续航,影响到日常的使用,通常充满电在50公里的行程比较多,也有60~80公里的行程,更多的是100公里。超长续航的比较少,代价是更重的电池和价格。
购买之前,先想清楚,购买电动车的定位,方便下一步筛选。
根据第一步所想得定位,可初步筛选出相应功能的电动车品牌所对应的车型,这一步,就要确定一下购买的预算。
车架不同,价格有大概1K左右的预算,简单车架的电动车一般在2k左右,完整车架的电动车一般在3~4k左右(简单车架和完整车架为我自己创的,方便描述)
确定了预算之后,就可以进一步排除筛选的范围,直到确定想买的车型。
确定了定位和预算之后,这一步就要从众多的电动车品牌中选一出一款自己喜欢的车子。每个人的诉求不同,性价比、颜值、续航、重量、品牌粉、广告代言明星粉(胡歌^_^)等等
这里罗列一下国内主要的电动车品牌,供参考:
讲一下我购买前关注的比较多的品牌情况,小牛、雅迪、绿源、爱玛。
1、小牛
主要生产锂电池电动车,外形比较酷,续航很不错,稍微高端一点的车型还配有app监控服务,另外还提供保险。缺点是价格偏高,价位在4500以上依车型而定。
本来是很中意小牛的,最终没有买,一来是价格偏高,二来是担心被盗心疼。
2、雅迪
算是国内电动车的第一品牌,有铅酸电池和锂电池的电动车可供选择,续航和售后还不错,价格属于中上,配套服务没有小牛的好,目前雅迪应该是走偏高端的路线。
我最终购买了雅迪的铅酸电池的一款车,买的是60V的电池,续航还不错,在60~80公里的样子,主要是我老婆看中了车子的颜值。
3、绿源
车子的外观和雅迪相似,功能上也和雅迪相近,价格比雅迪偏低一点,也是一个不错的选择,性能上没有测试过。
4、爱玛
爱玛是从自行车出身的,因此车架上会更偏向自行车一些,走得偏低端的路线。
以上这些情况,供大家参考,实际购买的时候,需要找几家门店去看看实际的车子,包括看外观、试骑等等。
说说购买电动车之后的使用情况,主要是平时周末的时候买菜和出去周边游玩。
载人和物
可以带一个人,可以带超市购买的物品完全没有问题,只是不是大件。曾经带过最大的一件物品是,从宜家拖了一个花架,大概有1.7米的高度。
续航
平时走的公里,坡度普遍不高的情况,一般充满电,可使用70公里以上。就平时周末使用,一周充一次电的频率。
重量
这里不得不吐槽,购买的铅酸电池及完整车架的电动车,重量太重了,上下楼很费劲,平时推一下挪一下都要费力。如果是在意车子重量的,建议买锂电池的车。
以上所有内容为购买过程中的心得体会,有不足的地方,欢迎提问或者讨论
设计导航菜单的过程中,有时候会涉及到二级子菜单,外部的或者是内部页面页面的跳转,这个时候,锚点可能会派上场。
其中使用锚点进行页面的各部分内容跳转,有时候页面的导航栏是使用固定定位(fixed)的布局,可能会导致标题遮挡部分跳转后的内容,因此,需要对锚点调整后的位置进行偏移。
通过使用css实现锚点跳转后的位置调整:
定义一个class:
1 | .named-target { |
将这个class赋给锚点或者锚点后的元素即可。
字面上的原理可以理解为元素外边距向上移动了50像素,使用上内边距给抵消了。
内在的原理,我还没理解,待理解了再更新。
css布局经历了使用table和float布局的过程,W3C推出了flexbox的布局方式。
使用div或者其他标签作为容器,用于放置其他子元素。
嵌套在容器中的直接元素自动转为flex item,子元素的子元素便不是flex item。
1 | <!-- html part --> |
i18next的jquery插件jquery-i18next的使用方法
使用jquery-i18next插件前,需要jquery和i18next的支持。
jquery-i18next支持npm和bower安装
1 | # npm package |
1 | <ul class="nav"> |
可在源码路径下创建locales/en/translation.json文件
1 | { |
1 | // 其中i18nextInstance是i18next的实例,最后一个参数是配置项 |
最终展现在网页中的结果
1 | // <ul class="nav"> |
通过jQuery的选择器来实现不同的翻译
1 | <a id="btn1" href="#" data-i18n="myKey"></a> |
1 | <ul class="nav"> |
1 | <div class="outer" data-i18n="ns:key" data-i18n-target=".inner"> |
比如,想要设置某个元素的title属性的多语言,可使用这种方式;或者其他提示信息等。
1 | <a id="btn1" href="#" data-i18n="[title]key.for.title"></a> |
和设置单个属性类似,不过通过分号进行分隔,添加多个属性。
1 | <a id="btn1" href="#" data-i18n="[title]key.for.title;myNamespace:key.for.text"></a> |
1 | <a id="btn1" href="#" data-i18n="[html]key.for.title"></a> |
给一个元素原有内容前插入一些翻译文字
1 | <a id="btn1" href="#" data-i18n="[prepend]key.for.title">insert before me, please!</a> |
给一个元素原有内容后追加一些翻译文字
1 | <a id="btn1" href="#" data-i18n="[append]key.for.title">append after me, please!</a> |
1 | <a id="btn1" href="#" data-i18n="[data-someDataAttribute]key.for.content"></a> |
这里罗列一些关于学习Linux的基础准备工作,来自《鸟哥的私房菜》,近期准备重新刷一遍,巩固一下Linux的知识和操作。
了解计算机的概论,包括一些基本理论知识;以及计算机相关的硬件知识,包括计算机的组成。
选择一款Linux的发行版并尝试安装。
了解用户、用户组、权限、程序等概念。
所有Unix Like的系统均安装了vi编辑器,平时操作修改配置文件都可能使用到。
玩命令行必须要经历的一步,主要包括“正则表达式”、“管道命令”与“数据流重定向”。
玩Linux的时候,免不了要自己安装驱动程序或者额外的软件,Tarball/rpm/dpkg等软件包管理工具的使用就很重要了。
“IP”、“路由”等概念需要了解,以及再进一步的TCP/IP协议。