Write the Code. Change the World.

3月 08

花瓣的内容排版是使用瀑布流的方式排版。实现瀑布流式的排版的插件蛮多的,blocksit 就是一个比较简便的插件。

依赖少,仅仅依靠 jquery。 css也少。用该插件,注意以下几个问题就可以了

  1. 每次执行 BlocksIt 之前,设置父容器的宽度的时候要正确。
  2. 图片加载完成后,再 BlocksIt 一次。防止,图片排版错乱。

其实,排版的是图片的父容器。使用的是绝对定位。而为什么总是说图片,就是因为所要展示的中心是图片。围绕图片,可以在图片上放置div,图片下边,等放置div。其结构可以有下边这样的层次构成。

阅读全文 >>

3月 01

什么是 RESTful

RESTful 是一种软件设计风格,由 Roy Fielding 在他的 论文 中提出,全称为 Representational State Transfer,直译为表现层状态转移,或许可以解释为用 URL 定位资源,用 HTTP 动词描述操作,不用太纠结于定义,接下来我们会详细讨论。

RESTful 风格的接口,目前来看,实现的最好的就是 Github API,经常被效仿。接下来我们通过分析 Github API 来引出我们的 API 设计原则。

阅读全文 >>

1月 28

textarea 原本是不会自适应高度的。可恨的滚动条也总会出现。想要让textarea自适应高度的,就用 js 吧。

自适应高度

$('textarea').each(function () {
    this.setAttribute('style', 'height:' + (this.scrollHeight) + 'px;overflow-y:hidden;');
}).on('input', function () {
    this.style.height = 'auto';
    this.style.height = (this.scrollHeight) + 'px';
});

textarea 内容改变侦听

$('textarea').bind('input propertychange', function() {
    $('.msg').html($(this).val().length + ' characters');
});

额外赠送 smplemde

https://github.com/sparksuite/simplemde-markdown-editor

可隐藏bar,可设置最小高度,可侦听变化,可复制粘贴图片。

额外赠送 js markdown->html

https://github.com/chjj/marked

调用 marked 方法即可。

阅读全文 >>

1月 05

批处理是一种高效的操作模式。既然是批量,就得有迹可循,有规则可定义。比如给最后5个文件打包压缩,又比如只将.jpg文件打包压缩。下边,就来总结下常见的操作。

先看下for循环

cd ss
for i in `find ./*.jpg`;
do echo $i;
done

上边的 for 循环会将 ss文件下,所有的以 .jpg 结尾的文件名列出来。需要注意 符号以及变量$i`。

阅读全文 >>

1月 01

Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码。因此运行php artisan migrate 会出现如下错误:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

那么问题根源,以及怎么解决呢。

阅读全文 >>

12月 28

场景

假如我们要使用七牛的 token

  1. 直接写死在代码调用的地方。 [x]可维护性低
  2. 写在 config/app.php 文件中。[x]无法区分环境进行配置

  3. 存储在 .env 文件中,使用 env() 方法直接读取。 [x]虽然解决了环境问题,但不推荐。

  4. 存储在 .envconfig/app.php 文件中,然后使用 config()函数来读取。 [x] 最佳方案

一种方法是最古老的方法,代码可维护性极低,一旦域名变更就只能全局替换。第二种方法无法区分环境,例如本地使用开发环境域名测试,线上才是正式的 CDN 域名。第三种方法虽然解决了环境变量的问题,并且也具备一定的灵活性,但是不够灵活,假如你的网站流量巨大,需要配置几个 CDN 域名,使其在加载静态资源时随机支配域名,这种做法就无法满足需求了。第四种方法既支持环境变量,又具备极高的灵活性,假如遇到同样的 CDN 多域名随机问题,你只需要写一个辅助方法,然后在 config/app.php 中调用即可,不需要动到任何一行业务逻辑代码。

阅读全文 >>