工作日记,杂项

in 日常随笔 with 2 comments 访问: 14,117 次

2017-06-28 (完结)

今天在工作的时候发现,苹果的safari浏览器会自动将数字转换成电话号码,导致显示不正常;
解决办法:
添加

<meta name="format-detection" content="telephone=no" />

2017-06-16

一次遮羞布的处理:使用js仿照“ctrl + f”完成对页面元素的搜索

2017-06-09

Laravel + MongoDB 最近学习MongoDB的时候就想通过Laravel实现一下。首先进入到项目跟目录执行
composer require jenssegers/mongodb (这里我们composer的是支持ORM驱动的,
原生php的话使用require mongodb/mongodb) ,这时候报了错,原来是猴急的我忘记装扩展了(windows.php.net下载了mongodb的扩展)。
开始

1、config/app.php - Service Provider

providers追加:
Jenssegers\Mongodb\MongodbServiceProvider::class,

aliases追加:
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
//Moloquent 使用mongodb的Model继承

2、config/database.php


'default' => env('DB_CONNECTION', 'mongodb'), //默认数据库为mongo

connections 追加:
'mongodb' => [        //MongoDB
'driver'   => 'mongodb',
            'host'     => '10.2.20.46',
            'port'     => 10001,
            'username' => '',
            'password' => '',
            'database' => 'userbehavior',  //demodb
            'options' => []
        ],

3、Model

使用mongodb的Model 中的collection 相当于MySQL中的表名设置:


protected $collection = 'table';

主键是默认的_id

不使用mongodb的Model添加

protected $connection = 'mysql';

或者修改/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php中的

//protected $connection;
protected $connection = 'mysql';

4、Query Builder

//mongodb的操作可以使用laravel封装好的查询构造器等等
DB:table(''); => DB:collection('')

参考更多资料https://github.com/jenssegers/laravel-mongodb

2017-06-07

h5写的视频网页在某些电脑中打开后只下载而不播放的问题,
以及程序中出现“No compatible source was found for this media”的问题,多数情况下是忽略了MIMEtype要对应!

常见视频格式MIMEtype:

Video Type        Extension        MIME Type
Flash                .flv            video/x-flv
MPEG-4            .mp4            video/mp4
iPhone Index        .m3u8            application/x-mpegURL
iPhone Segment    .ts                video/MP2T
3GP Mobile        .3gp            video/3gpp
QuickTime            .mov            video/quicktime
A/V Interleave    .avi            video/x-msvideo
Windows Media        .wmv            video/x-ms-wmv

示例代码如下:

<video id="video" width="640" height="360" class="video-js
vjs-default-skin vjs-big-play-centered" preload="auto"
data-setup='{"language":"zh-CN","playbackRates":[0.5,1,1.5,2,4]}'
controls poster="./cctv3.png">

    <source src="http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8" type="application/x-mpegURL">

</video>

<hr>

<video width="640" height="360" id="example_video_1" class="video-js
vjs-default-skin vjs-big-play-centered" controls preload="auto"
poster="./favicon.png" data-setup='{"example_option":true,
"playbackRates":[0.5,1,2,4]}'>

     <source src="./V-stuntssvc-en_us-720p.mp4" type='video/mp4' />

</video>

2017-06-05

字符串时间对比,推荐使用new DateTime方式,因为使用64位方式进行存储,从而避免出现2038年BUG问题;

$a = "2017-06-08";
$b = "2017-06-18";

//var_dump(strtotime($b) - strtotime($a));  //echo int(864000) 

$objA = new DateTime($a);
$objB = new DateTime($b);

$interval = $objA->diff($objB);
var_dump($interval->days);   //  echo int(10)

2017-06-02

redis分享 - 仅使用Redis+PHP设计实现一个简单的Twitter

 INCR global:nextUserId => 1000
 SET uid:1000:username Jack
 SET uid:1000:password 123456
 SET username:antirez:uid 1000

读了这篇文章,如雷贯耳,豁然开朗!
我们使用global:nextUserId为键(Key)是为了给每个新用户分配一个唯一ID,然后用这个唯一ID来加入其他key,以识别保存用
户的其他数据。这就是kv数据库的设计模式!请牢记于心!

2017-05-31

  sort() 函数用于对数组单元从低到高进行排序。
  rsort() 函数用于对数组单元从高到低进行排序。
  asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
  arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
  ksort() 函数用于对数组单元按照键名从低到高进行排序。
  krsort() 函数用于对数组单元按照键名从高到低进行排序。
看了下源码,php 的sort()函数是使用快排实现的,如果不知道哪种方式适合你,
参考动画Sorting Algorithms Animations

2017-05-27

在处理模板打印的问题上时出现过这样一个问题:浏览器不知道何时分页,导致出现断裂层。

解决办法:
添加css样式强制分页

{ page-break-after: always; /*在标签后换页*/ }
{ page-break-before: always; /*在标签前换页*/ }

2017-05-25

[twig]心血来潮就要用twig!需求上要我写一个可配置模板,于是利用UEditor二次开发满足需求,一直用smarty今天用twig果
然踩了坑!

<?php

require_once'../vendor/autoload.php';    

$loader = new Twig_Loader_Filesystem('../twigTest');    //定义模板路径
$twig = new Twig_Environment($loader, array(
    'cache' => '../twig_cache', )                      //缓存路径(记得清理)
);

//以下下两种方式相当于smarty的display

//1. 
//$tem = $twig->load('test.twig');
//echo $tem->render(array('the' => '修哥', 'go' => '武汉'));

//2. 
echo $twig->render('test.twig', array('the' => '修哥', 'go' => '深圳'));

官方文档



smarty: (composer 安装的smarty)

<?php

require_once '../vendor/autoload.php';

$smarty = new Smarty();
$smarty->setTemplateDir( '../twigTest/');      //模板地址,为了省事直接用刚刚调试twig的目录了
//$smarty->setCacheDir( '../view_cache');
//$smarty->setCompileDir( '../view_c');
$smarty->setLeftDelimiter('{{');
$smarty->setRightDelimiter('}}');

// 将上面代码做出配置文件,引入一次即可使用

$smarty->assign('name', '修哥');
$smarty->display('test.twig');

官方文档



test.twig

twig {{ the }} - {{ go }} smarty {{$name}}

2017-05-24

今天终于可以不用再继续做前端的东西了,断断续续用了大约三天的时间,把原本计划不支持的IE8浏览器兼容性调试完毕,上传了代码终于舒了一口气,MDIE for Microsoft !
中午的时候产品改了一个小需求,我配合罗巅峰完成了一个后退同时记录数据的功能,利用cookie共享实现,再一次捍卫了天才称号!

2017-05-23

ie8以下不支持css3的background-size属性,用ie专有属性filter可以解决,但是会与background url的图片重叠,为了兼容于是仍需要ie的hack写法,完整代码如下:

  background: url('../imagesNew/logo.png') no-repeat ;

  background-size:245px;

  background: none\9;   /*hack*/

  filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/Reserve/imagesNew/logo.png', >sizingMethod='scale');    /*过滤*/

  -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader( src='/Reserve/imagesNew/logo.png', >sizingMethod='scale')";    /*过滤*/

既解决了ie8以下的兼容问题,又不影响其他版本浏览器。

参考:有什么办法可以让ie浏览器不支持background-image属性,用其他浏览器可以支持
参考:[IE 8: background-size fix [duplicate]][8]

2017-05-22

(IE8json未定义错误)IE浏览器真的是任性,程序在同事测试下是通过的,但是到了现场却报了“json格式未定义,xxx.js xxxh行”的错误,貌似是JSON.stringify()/JSON.parse()方法没有解析,多发查阅资料才发现,JSON是包含在JScript 5.8中,而为了向下兼容ie8只有在文档模式是”Internet Explorer 8 Standards”的时候才使用JScripte 5.8,其他时候使用JScripte 5.7特性。因此如果文档模式没有声明为”Internet Explorer 8 Standards”,ie8是找不到JSON对象的。因为没有兼容到ie6/7,所以必然在ie6/7中,JSON会出现未定义的问题。

解决方法:下载定义json的文件json2.js,并引入到项目中。下载地址:https://github.com/douglascrockford/JSON-js

` <script src="./js/json2.js"></script>
`

2017-05-18

(IE8substr、new Date)这两天真的是忙到爆炸,但是无比充实,今天让我最开心的不是与云会诊平台、影像系统的成功对接,而是解决了诊间预约在IE8下的一个无法保存的BUG,原因是IE9以前js的substr函数使用负数会解析失败,换成slice、substring可以解决,问题不大,但是排错是非常辛苦的,尤其这种兼容性问题,解决的那一刹那我毫不留情的喊出了我的口头禅“我TM是个天才啊”!详情可以参考浅析字符串操作方法slice、substr、substring及其IE兼容性

昨天正好也遇到一个IE8 new Date(stringTime)的问题,一并记录下来:[ javascript下ie7,ie8的Date
Bug的解决][11];JS判断浏览器是否是IE9版本以下

赞赏支持
Responses
  1. 好文,拜读,以后常看学习。

    Reply
    1. @替天行盗

      嗯,共勉!

      Reply